gpt4 book ai didi

Matplotlib:显示第二个 y 轴

转载 作者:行者123 更新时间:2023-12-01 04:44:14 24 4
gpt4 key购买 nike

我正在尝试使用 imshow() 在 matplotlib 中绘制一个二维数组,并在第二个 y 轴上用散点图覆盖它。

oneDim = np.array([0.5,1,2.5,3.7])
twoDim = np.random.rand(8,4)

plt.figure()
ax1 = plt.gca()

ax1.imshow(twoDim, cmap='Purples', interpolation='nearest')
ax1.set_xticks(np.arange(0,twoDim.shape[1],1))
ax1.set_yticks(np.arange(0,twoDim.shape[0],1))
ax1.set_yticklabels(np.arange(0,twoDim.shape[0],1))
ax1.grid()

#This is the line that causes problems
ax2 = ax1.twinx()

#That's not really part of the problem (it seems)
oneDimX = oneDim.shape[0]
oneDimY = 4
ax2.plot(np.arange(0,oneDimX,1),oneDim)
ax2.set_yticks(np.arange(0,oneDimY+1,1))
ax2.set_yticklabels(np.arange(0,oneDimY+1,1))

如果我只将所有内容运行到最后一行,我就会完全可视化我的数组:

That's what it is supposed to look like!

但是,如果我添加第二个 y 轴 (ax2=ax1.twinx()) 作为散点图的准备,它会更改为这种不完整的渲染:

Incomplete visualisation of array

有什么问题?我在上面的代码中留下了几行描述散点图的添加,尽管它似乎不是问题的一部分。

最佳答案

在 Thomas Kuehn 指出的 GitHub 讨论之后,该问题已在几天前得到解决。在没有现成可用的构建的情况下,这里有一个使用 的修复程序。方面='自动' 属性(property)。为了获得漂亮的常规框,我使用数组维度调整了图形 x/y。轴自动缩放功能已被用于移除一些额外的白色边框。

oneDim = np.array([0.5,1,2.5,3.7])
twoDim = np.random.rand(8,4)

plt.figure(figsize=(twoDim.shape[1]/2,twoDim.shape[0]/2))
ax1 = plt.gca()

ax1.imshow(twoDim, cmap='Purples', interpolation='nearest', aspect='auto')
ax1.set_xticks(np.arange(0,twoDim.shape[1],1))
ax1.set_yticks(np.arange(0,twoDim.shape[0],1))
ax1.set_yticklabels(np.arange(0,twoDim.shape[0],1))
ax1.grid()

ax2 = ax1.twinx()

#Required to remove some white border
ax1.autoscale(False)
ax2.autoscale(False)

结果:

enter image description here

关于Matplotlib:显示第二个 y 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48255824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com