我希望能够根据数据跨度自动缩放共享x轴图形的子图的垂直高度!我想比较显示数据的相对强度。如果我在子图中使用sharey=True,则会以一种使得相对强度可识别的方式显示数据:
import matplotlib.pyplot as plt
from matplotlib import gridspec
import numpy as np
SIZE = (12, 8) #desired overall figure size
# Simple data to display in various forms
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
y2 = 2*(np.sin(x ** 2))
y3 = 3*(np.sin(x ** 2))
fig, ax = plt.subplots(3,ncols=1, sharex=True, sharey=True)
fig.set_size_inches(SIZE[1], SIZE[0])
fig.subplots_adjust(hspace=0.001)
ax[0].plot(x, y)
ax[1].plot(x, y2)
ax[2].plot(x, y3)
plt.show()
现在所有子图的高度都相同,y轴上的数据跨度可以被识别,因为数据以正确的相对比例显示。我想要实现的是,每个图的刻度线应该在数据结束的地方结束,从而消除未使用的白色空间。子图的大小应该表示数据的相对高度比例。它们在Y轴上仍然应该具有相同的缩放,以便观众可以估计相对数据高度(例如可能是计数率)。
我找到了以下链接,涉及类似的问题,但没有一个真正帮助我解决我的问题: 链接1链接2
hs = [int(np.ceil(np.max(y))) - int(np.floor(np.min(y))) for y in ys]
以便它从我的实验数据中读取值。我在循环中填充我的轴(ax)对象,然后我有nrows
个轴对象。我不确定如何迭代存储在此对象中的 y 值。我尝试过:hs = [int(np.ceil(np.max(y))) - int(np.floor(np.min(y))) for y in axis.get_ydata()]
但是这会导致AttributeError: 'numpy.ndarray' object has no attribute 'get_ydata'
。 - NorrinRadddata_frame = pd.DataFrame(data=data, index=index, columns=columns)
。读取数据函数返回如下对象:return Data(filename, data_frame, title, path, source)
。绘图函数创建的图表如下:ax.plot(self.data.index, self.data.columns,kwargs)
,我在主绘图脚本中循环调用它,具体次数取决于我要绘制的数据量。通常包含实验数据的列被称为“EXP”。 - NorrinRadd