【问题标题】:Matplotlib - Force 2 subplots to have same tick labels without changing data and plotMatplotlib - 强制 2 个子图具有相同的刻度标签而不更改数据和绘图
【发布时间】:2022-10-15 01:06:36
【问题描述】:

给定

import matplotlib.pyplot as plt
import random 

fig, ax = plt.subplots(1, 2, figsize = [9, 5], dpi = 100) 
xs = [random.randint(-10, 10) for _ in range(10)]
ys = [random.randint(-10, 10) for _ in range(10)]

xx = [random.randint(-20, 20) for _ in range(10)]
yy = [random.randint(-20, 20) for _ in range(10)]

ax[0].plot(xs, ys)
ax[1].plot(xx, yy)

plt.show()

产生

我希望第二个图的 xticks 和 yticks 与第一个图的相同,而不影响显示的图数据。所以基本上我只想转换/掩盖刻度以匹配第一个情节并保持其他一切完好无损。

这是我要实现的目标的示例。注意刻度

我努力了

  • ax[1].xaxis.set_major_formatter(ax[0].xaxis.get_major_formatter())
  • ax[1].set_xticks(ax[0].get_xticks())
  • ax[1].set_xticklabels(ax[0].get_xticklabels())
  • 其他一些 ticks.Formatter 东西可以单独转换每个元素,但这似乎有点矫枉过正

这些都不是我想要实现的。


编辑澄清

人们似乎不明白我的要求。我不要希望在更改刻度标签时影响绘图(放大、缩小、平移、旋转)。所以给ax[1]ax[2] 完全相同的情节,就像

xmin,xmax = ax[0].get_xlim()
ymin,ymax = ax[0].get_ylim()
ax[2].set_xlim(xmin,xmax)
ax[2].set_ylim(ymin,ymax)

生产

请注意,与第二个相比,第三个图(带有更改的刻度标签)是如何放大的,这不是我想要的。我希望第二个图和第三个图保持不变,但有不同的刻度(以匹配第一个图的刻度)

【问题讨论】:

标签: python matplotlib xticks


【解决方案1】:

尝试这个

xmin,xmax = ax[0].get_xlim()
ymin,ymax = ax[0].get_ylim()
ax[1].set_xlim(xmin,xmax)
ax[1].set_ylim(ymin,ymax)

【讨论】:

  • 不,这只是放大情节。这不是我要找的。我指定我希望数据和绘图不改变并保持相同。我只想用面具更改刻度标签。
猜你喜欢
  • 2015-08-16
  • 1970-01-01
  • 2014-06-30
  • 2011-06-13
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多