改变极坐标子图的大小

4

我正在绘制一个3x3的极坐标图(看起来有点像雷达图)。

例如,就像这个例子中一样: https://matplotlib.org/examples/pylab_examples/polar_demo.html

我已经成功地绘制了所需的数据,但现在想通过一个变量来缩放每个极坐标图,以便某些圆比其他圆更大,就像下面的图片一样。 scale either by width/height or area

当我循环遍历子图时,我需要应用哪些命令到轴上?

我尝试过开启/关闭自动缩放。 可能gridspec.Gridspec()会起作用,但我不确定这是否是最好的解决方案,尽管它可能是。

谢谢


如果您发布一个最小的、完整的工作示例,这将更容易,但由于您正在使用极坐标投影,因此通过缩放半径与该个体变量可能已足够。 - ml4294
1个回答

3
很好的问题。
您还可以直接使用fig.add_axes()来获得一个连续的空间,在其中放置您的图表:
f = plt.figure()
ax = f.add_axes([0.05, 0.4, 0.2, 0.2], polar=True) # Left, Bottom, Width, Height
ax2 = f.add_axes([0.30, 0.2, 0.6, 0.6], polar=True)
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
ax.plot(theta, r)
ax2.plot(theta, r)

不同大小的极坐标图


更好的版本

创建Axes时,您可以尝试设置不同的尺寸:

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r

ax = plt.subplot2grid((2,3), (0,0), polar=True)
ax2 = plt.subplot2grid((2,3), (0,1), rowspan=2, colspan=2, polar=True)
ax.plot(theta, r)
ax2.plot(theta, r)

带不同大小的极坐标图

您可以拥有比2x3更大的网格,并且在绘图大小上具有更多细度。

(不要在意不同的图形风格)

希望对您有所帮助。


谢谢 - 我没有考虑过使用比2x3更大的网格。在某些情况下可能会有用。我目前正在使用 gridspec(..., widthratios=[], heightratios=[]),但结果不尽如人意。 - dreab
谢谢 - 第二个选项似乎是最好的解决方案! - dreab
是的,我也这么认为。如果它解决了你的问题,请接受答案以让其他人知道。 - jrjc
唉 - 我意识到 gridspec 不是一个好的解决方案,因为比率是指行/列,而不是单个子图。 - dreab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接