gpt4 book ai didi

python - matplotlib:不同比例的叠加图?

转载 作者:IT老高 更新时间:2023-10-28 20:37:16 25 4
gpt4 key购买 nike

到目前为止,我有以下代码:

colors = ('k','r','b')
ax = []
for i in range(3):
ax.append(plt.axes())
plt.plot(datamatrix[:,0],datamatrix[:,i],colors[i]+'o')
ax[i].set(autoscale_on=True)

使用每个轴的 autoscale_on=True 选项,我认为每个图都应该有自己的 y 轴限制,但看起来它们都共享相同的值(即使它们共享不同的轴) .如何将它们设置为缩放以显示每个 datamatrix[:,i] 的范围(只是对 .set_ylim() 的显式调用?)而且,如何我为上面可能需要的第三个变量 (datamatrix[:,2]) 创建了一个偏移 y 轴?谢谢大家。

最佳答案

听起来你想要的是子图......你现在做的事情没有多大意义(或者我对你的代码片段很困惑,无论如何......)。

试试这样的:

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(nrows=3)

colors = ('k', 'r', 'b')
for ax, color in zip(axes, colors):
data = np.random.random(1) * np.random.random(10)
ax.plot(data, marker='o', linestyle='none', color=color)

plt.show()

enter image description here

编辑:

如果您不想要子图,您的代码片段会更有意义。

您正在尝试将三个轴相互叠加。 Matplotlib 认识到图中已经有一个精确大小和位置的子图,因此它每次都返回 same 轴对象。换句话说,如果您查看列表 ax,您会发现它们都是同一个对象

如果您真的想要这样做,则每次添加轴时都需要将 fig._seen 重置为空字典。但是,您可能并不想这样做。

不要将三个独立的图相互叠加,而是看看使用 twinx 代替。

例如

import matplotlib.pyplot as plt
import numpy as np
# To make things reproducible...
np.random.seed(1977)

fig, ax = plt.subplots()

# Twin the x-axis twice to make independent y-axes.
axes = [ax, ax.twinx(), ax.twinx()]

# Make some space on the right side for the extra y-axis.
fig.subplots_adjust(right=0.75)

# Move the last y-axis spine over to the right by 20% of the width of the axes
axes[-1].spines['right'].set_position(('axes', 1.2))

# To make the border of the right-most axis visible, we need to turn the frame
# on. This hides the other plots, however, so we need to turn its fill off.
axes[-1].set_frame_on(True)
axes[-1].patch.set_visible(False)

# And finally we get to plot things...
colors = ('Green', 'Red', 'Blue')
for ax, color in zip(axes, colors):
data = np.random.random(1) * np.random.random(10)
ax.plot(data, marker='o', linestyle='none', color=color)
ax.set_ylabel('%s Thing' % color, color=color)
ax.tick_params(axis='y', colors=color)
axes[0].set_xlabel('X-axis')

plt.show()

enter image description here

关于python - matplotlib:不同比例的叠加图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733693/

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