【发布时间】:2019-07-16 11:29:18
【问题描述】:
好吧,我把自己彻底搞糊涂了……
我有生成包含 8 个子图的图形的代码
import numpy as np
import matplotlib.pyplot as plt
names = ["one", "two", "three", "four", "five", "six", "seven", "eight"]
x = np.arange(1,11)
y = x**2.
z = x**1.5
fig = plt.figure()
fig.text(0.5, 0.02, "X axis", ha='center', fontsize=12)
fig.text(0.03, 0.5, "Y axis", va='center', rotation='vertical', fontsize=12)
palette = plt.get_cmap('tab10')
for name in names:
i = names.index(name)+1 # What sub-plot are we on?
graph = fig.add_subplot(4, 2, i)
# Add a new subplot to go in the grid (4x2)
graph.set_title(f"plot {name}", fontsize=11)
plot = graph.plot(x, y, color=palette(1))
plot = graph.plot(x, z, color=palette(0))
plt.subplots_adjust(
top=0.93,
bottom=0.116,
left=0.124,
right=0.977,
hspace=0.972,
wspace=0.165)
plt.show()
它工作得很好,除了我不知道如何设置子图以使它们共享 x 和 y 轴(我只想要 x 轴和左边缘的底边上的轴)。我能找到的所有示例似乎都依赖于每个具有不同名称的子图,您可以使用它来设置sharex 或sharey。由于我正在生成它们,因此代码没有任何内容可以指向。
【问题讨论】:
-
matplotlib 库/示例部分中的任何示例对您有帮助吗?
-
“每个子图都有不同的名称,您可以使用它来设置 sharex 或 sharey。由于我正在生成它们,因此代码没有任何指向”。如果您指的是
graph变量被连续覆盖的事实:您是否考虑将每个子图添加到graph[](graph.append(fig.add_subplot(...) 的数组中? -
我在 matplotlib 库中找不到任何相关内容(它们都是手动构建的),不,我没有考虑将图形添加到数组中。所以,现在我觉得很愚蠢@00。我应该删除问题吗?
-
也许,也许不是。如果你用你的解决方案自行回答,我实际上更喜欢(这样我们就可以看到你如何使用 sharex/sharey)。也许只是重要的一点,即 for 循环。有了实际答案,如果其他人遇到同样的问题,这可能是可行的(事实上,这可能已经是重复的问题,但找到合适的重复问题可能比(自己)回答问题更难)。跨度>
标签: python matplotlib subplot