【问题标题】:Python Matplotlib How to create subplots? [duplicate]Python Matplotlib 如何创建子图? [复制]
【发布时间】:2016-06-29 01:37:35
【问题描述】:

我很难理解如何创建好的子图。我想创建一个类似于下图的图形。有谁知道我如何设置一个类似的模板?

另外,我如何在子图中将这些点与误差线包括在内? 这是我的错误栏代码:

mass, p, errp, errl = np.loadtxt('/Users/shawn/Desktop/vika1.dat', usecols = [0, 10, 11, 12], unpack = True)

plt.errorbar(mass, np.log10(p) - 4, yerr = [np.log10(p) - np.log10(p-errl), np.log10(p + errp) - np.log10(p)], fmt = 'o', markerfacecolor = 'w', markeredgecolor = 'k', ecolor = 'k')

【问题讨论】:

  • 我相信链接的副本及其答案(不仅仅是接受的答案)是问题的主要部分:消除差距。另外,如果适用,我建议对这些图使用sharexsharey

标签: python matplotlib plot subplot astronomy


【解决方案1】:

您可以使用 sharex 和 sharey 来共享坐标轴。下面将给出你想要的布局。然后,您可以使用特定的绘图功能绘制单个子图。

更新了下面的完整代码

import numpy as np
import matplotlib.pyplot as plt
fig, axes  = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

axes[0,0].plot(X, C, color="blue", linewidth=1.0, linestyle="-")
axes[0,1].plot(X, C, color="orange", linewidth=1.0, linestyle="-")
axes[1,0].plot(X, C, color="green", linewidth=1.0, linestyle="-")
axes[1,1].plot(X, C, color="red", linewidth=1.0, linestyle="-")
plt.subplots_adjust(wspace=0,hspace=0)
plt.show()

不明白为什么有人对我的初始答案投了反对票...

下面的行将修剪 x 和 y 轴的最小值,从而避免标签重叠

from matplotlib.ticker import MaxNLocator
axes[1,1].yaxis.set_major_locator(MaxNLocator(prune='lower'))
axes[1,1].xaxis.set_major_locator(MaxNLocator(prune='lower'))

【讨论】:

  • 嗯.... 似乎运作良好。但是,有没有办法防止轴上的数字重叠?
猜你喜欢
  • 2022-12-06
  • 2022-07-07
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2011-01-31
  • 2021-10-30
  • 2020-09-22
相关资源
最近更新 更多