【问题标题】:Matplotlib fixed figure size and subplots positionsMatplotlib 固定图形大小和子图位置
【发布时间】:2017-12-12 05:49:47
【问题描述】:

我在问你一个关于 matplotlib 中子图大小的问题。我需要在一行中创建一个由 3 个子图组成的固定大小的图形。出于“编辑原因”,我需要修复图形的大小但我还想在不影响图形大小的情况下修复子图的大小和位置(第三个子图必须比前两个窄)。

我尝试使用 GridSpec 没有成功。我还尝试使用“figsize”固定图形大小并为子图使用 add_axes,但根据子图的相对大小,图形和子图的整体大小会发生变化。

使用 gnuplot 时,可以对子图使用“设置原点”和“设置大小”。我们在 matplotlib 中有类似的东西吗?

【问题讨论】:

  • 你能发布你的代码吗?
  • 图形大小不会因添加任何轴或更改其大小而改变。没有简单的选项将轴定位在绝对坐标中,但当然这可以从图形大小和相对坐标中计算出来。无论如何,如果您需要帮助,您需要显示问题的minimal reproducible example

标签: python matplotlib


【解决方案1】:

这样的?更改宽度比将更改各个子图的大小。

fig, [ax1, ax2, ax3] = plt.subplots(1,3, gridspec_kw = {'width_ratios':[3, 2, 1]}, figsize=(10,10))

plt.show()

如果您想对尺寸进行更多控制,也可以使用 Axes。它仍然是相对的,但现在是整个图形大小的一小部分。

import matplotlib.pyplot as plt

# use plt.Axes(figure, [left, bottom, width, height])
# where each value in the frame is between 0 and 1

# left
figure = plt.figure(figsize=(10,3))
ax1 = plt.Axes(figure, [.1, .1, .25, .80])
figure.add_axes(ax1)
ax1.plot([1, 2, 3], [1, 2, 3])

# middle
ax2 = plt.Axes(figure, [.4, .1, .25, .80])
figure.add_axes(ax2)
ax2.plot([1, 2, 3], [1, 2, 3])

# right
ax3= plt.Axes(figure, [.7, .1, .25, .80])
figure.add_axes(ax3)
ax3.plot([1, 2, 3], [1, 2, 3])

plt.show()

【讨论】:

  • 很乐意提供帮助,但请接受答案,如果有帮助,请点赞
  • 即便如此,这并不是我想要的,因为子图的大小和位置是相对的。我觉得奇怪的是不能任意定义子图的大小和位置
猜你喜欢
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2019-04-06
  • 2015-07-15
相关资源
最近更新 更多