python - 绘制一个图,其中右侧有一个额外的 y 轴,顶部有一个额外的 x 轴,链接到底部的轴

标签 python numpy matplotlib plot

我正在尝试制作一个具有两个图的图形,它们在底部共享相同的 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)

Basically, what I need is on the right

最佳答案

右轴将是轴,使用与原始轴相同的 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()

enter image description here

关于python - 绘制一个图,其中右侧有一个额外的 y 轴,顶部有一个额外的 x 轴,链接到底部的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59288049/

相关文章:

python - keras和scipy的2D卷积结果不同

python - 如何将自定义函数应用于pandas数据框的每一行

python - 创建数据透视表

python - 如何使用matplotlib在python中生成3d三角形曲面(trisurf)图(数据已准备好)?

python-2.7 - TypeError : 'PathCollection' object is not iterable when adding second legend to plot

python - 如何用虚线绘制渐近线?

python - 无法更改 matplotlib 中的刻度标签属性

python - 如何访问 typing.Generic 的类型参数?

Python - 如何为我的散点图制作动画?

python - 关联矩阵?