【发布时间】:2023-04-09 03:39:02
【问题描述】:
我正在尝试将数百个子图绘制成一个图形(我可以将其拆分为一个网格并使其跨越多个 PDF 页面)但是如果我使用标准的 matplotlib 子图并一次添加一个子图,这个过程会很慢.可能适用于我的问题here 的解决方案。问题是我的数据对于每个子图都有不同的 x 范围。如何使所有 x 值具有相同的宽度,例如 1 英寸?这是一个说明问题的示例。
import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot(111)
plt.setp(ax, 'frame_on', False)
ax.set_ylim([0, 5])
ax.set_xlim([0, 30])
ax.set_xticks([])
ax.set_yticks([])
ax.grid('off')
x1 = np.arange(2,8)
y1 = np.sin(x1)*np.sin(x1)
xoffset1 = max(x1) + 1
print x1
x2 = np.arange(5,10)
y2 = np.sin(x2)*np.sin(x2)
print x2
print x2+ xoffset1
xoffset2 = max(x2) + xoffset1
x3 = np.arange(3,15)
y3 = np.sin(x3)*np.sin(x3)
print x3
print x3+ xoffset2
ax.plot(x1,y1)
ax.plot(x2+xoffset1, y2)
ax.plot(x3+xoffset2, y3)
plt.show()
谢谢
【问题讨论】:
-
不确定是否理解问题...这里只有一个图(三个不同的线,但都在同一个图上)...另外,您是否想要相同的 x 范围(所有图范围例如从 0 到 10)或者你想要相同的比例?
-
相同的比例。一些 x 值从 3 到 10 和一些从 2 到 5。当将前者绘制在同一图中时,后者看起来会被挤压。是否有有效的映射/转换使每个绘图的 x 值的值以 1 英寸宽表示。这样所有图像都将具有相同的 x 比例,并且它们看起来会更好
-
是的,它是一个包含多个“图”的图,当我沿水平方向移动时,x 轴的长度会发生变化。它比为每个情节使用子情节要快得多,尤其是当你有 100 个情节时。
标签: python matplotlib