我正在尝试制作一个具有两个图的图形,它们在底部共享相同的 x 轴,一个链接到左侧 y 轴,另一个链接到右侧 y 轴,并且还具有顶部 x 轴,它是底部 x 轴的函数(电流除以面积)。基本上我最终想要的是像左边附图那样的东西。 到目前为止,我只能用左右 y 轴绘制图,但我找不到包含顶部 x 轴的正确方法。我已经没有想法了,我想请求您提供帮助和建议来解决这个问题。 这是我到目前为止所尝试过的:
# Open and Plot Data
fname = folder + r'/' +f
#print(fname)
vect = np.loadtxt(fname, delimiter=' ')
current = vect[:,0]
voltage = vect[:,1]
power = vect[:,2]
current_density=current/area1/1000 #in kA/cm^2
fig,ax1=plt.subplots()
ax1.plot(current,voltage)
#l = ax2.plot(current_density,voltage)
#l.set_visible(False)
#ax1.grid(True) #add a grid to the LIV
#ax2 = ax1.twinx()
ax2= ax1.twinx()
#ax2=ax1.twiny()
ax2.plot(current, power)
最佳答案
右轴将是双轴,使用与原始轴相同的 x 轴,但使用不同的 y 轴。
顶轴将是辅助轴,通过函数依赖性与原始 x 轴链接。
总计:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax_right = ax.twinx()
area = 0.226
density = lambda current: current / area / 1000
current = lambda density: density * area * 1000
ax_top = ax.secondary_xaxis("top", functions=(density, current))
ax.plot([0, 250, 565], [0,8,12], label="Voltage")
ax_right.plot([0, 300, 565], [0, 0.3, 40], label="Power", color="C3")
ax.set_xlabel("Current [mA]")
ax.set_ylabel("Voltage [V]")
ax_right.set_ylabel("Power [mW]", color="C3")
ax_top.set_xlabel("Density [kA/cm${}^2$]", color="C1")
ax_right.tick_params(axis="y", color="C3", labelcolor="C3")
ax_right.spines["right"].set_color("C3")
ax_top.set_color("C1")
ax.spines["top"].set_color("C1")
ax_right.spines["top"].set_color("C1")
plt.show()
关于python - 绘制一个图,其中右侧有一个额外的 y 轴,顶部有一个额外的 x 轴,链接到底部的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59288049/