[英]How to Make a Plot with Two Different Y-axis in Python
我有一個二維數組,我使用這些數據來制作 plot,如下所示:
data = [[2.01756016, 2.83041846, 3.81709531, 4.98948707, 6.2480729],
[2.01756016, 2.59428527, 3.42083514, 4.15525314, 4.87254428],
[2.01756016, 2.47796649, 2.95297856, 3.37313728, 3.66131579],
[2.01756016, 2.24718239, 2.56393939, 2.70463483, 2.65250443]]
fig, ax = plt.subplots(figsize=(6, 6))
sidex = np.linspace(0.875, 2.125, 6)
sidey = np.linspace(5, 45, 5)
x, y = np.meshgrid(sidex, sidey)
z = [[data[i][j] for j in range(len(data[0]))] for i in range(len(data))]
plt.pcolormesh(x, y, z)
plt.xticks([1, 1.25, 1.5, 1.75, 2])
plt.yticks([10, 20, 30, 40])
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
現在我正在嘗試更改 y 軸
使y軸從Y到Y/10
在 plot 的右側創建第二個 y 軸:Y/100
就像下圖一樣。 我怎樣才能做到這一點?
我嘗試將plt.yticks([10, 20, 30, 40])
更改為plt.yticks([1, 2, 3, 4])
,但結果不是我想要的。
您可以使用twinx()
來實現它。 我建議使用ax.set_yticks
和ax.set_yticklabels
進行更多控制,但也可以使用plt.yticks(ticks=ticks, labels=labels)
。
編輯:我在 plot 中添加了一個顏色條。 創建顏色條時,您可以指定一個mappable
(colors 應匹配的 object)作為第一個參數。 為此,我將 colormesh 分配給一個變量以供以后重用( image = ax.pcolormesh(x, y, z)
)。
data = [[2.01756016, 2.83041846, 3.81709531, 4.98948707, 6.2480729],
[2.01756016, 2.59428527, 3.42083514, 4.15525314, 4.87254428],
[2.01756016, 2.47796649, 2.95297856, 3.37313728, 3.66131579],
[2.01756016, 2.24718239, 2.56393939, 2.70463483, 2.65250443]]
fig, ax = plt.subplots(figsize=(6, 6))
ax2 = ax.twinx()
sidex = np.linspace(0.875, 2.125, 6)
sidey = np.linspace(5, 45, 5)
x, y = np.meshgrid(sidex, sidey)
z = [[data[i][j] for j in range(len(data[0]))] for i in range(len(data))]
image = ax.pcolormesh(x, y, z)
ax.set_xticks([1, 1.25, 1.5, 1.75, 2])
ax.set_yticks([10, 20, 30, 40])
ax.set_yticklabels([1, 2, 3, 4])
ax2.set_yticks([10, 20, 30, 40])
ax2.set_yticklabels([10, 20, 30, 40])
ax2.set_ylim(ax.get_ylim())
fig.colorbar(image, pad=0.1)
ax.set_xlabel('X')
ax.set_ylabel('Y/10')
ax2.set_ylabel('Y')
plt.tight_layout()
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.