Matplotlib 缩小两个箱线图之间的距离
我正在使用python和matplotlib绘制下面所示的bloxplot有没有办法缩短X轴上两个方框图之间的距离? 这是我用来获取上图的代码:Matplotlib 缩小两个箱线图之间的距离,matplotlib,Matplotlib,我正在使用python和matplotlib绘制下面所示的bloxplot有没有办法缩短X轴上两个方框图之间的距离? 这是我用来获取上图的代码: import matplotlib.pyplot as plt from matplotlib import rcParams rcParams['ytick.direction'] = 'out' rcParams['xtick.direction'] = 'out' fig = plt.figure() xlabels = ["CG", "EG
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['ytick.direction'] = 'out'
rcParams['xtick.direction'] = 'out'
fig = plt.figure()
xlabels = ["CG", "EG"]
ax = fig.add_subplot(111)
ax.boxplot([values_cg, values_eg])
ax.set_xticks(np.arange(len(xlabels))+1)
ax.set_xticklabels(xlabels, rotation=45, ha='right')
fig.subplots_adjust(bottom=0.3)
ylabels = yticks = np.linspace(0, 20, 5)
ax.set_yticks(yticks)
ax.set_yticklabels(ylabels)
ax.tick_params(axis='x', pad=10)
ax.tick_params(axis='y', pad=10)
plt.savefig(os.path.join(output_dir, "output.pdf"))
这是一个更接近我想要的视觉效果的例子(尽管我不介意箱线图之间是否更接近):
您可以更改绘图的纵横比,也可以使用
宽度
kwarg:
要使长方体更宽。请尝试使用更改纵横比
ax.set_aspect(1.5) # or some other float
数字越大,绘图越窄(越高):
将拉伸一个圆,使其高度num
乘以宽度aspect=1
与aspect='equal'
相同
当代码写入时:
ax.set_xticks(np.arange(len(xlabels))+1)
您将第一个方框图放在0上,第二个方框图放在1上(尽管之后更改了勾号标签),就像您给出的第二个“通缉”示例一样,它们设置为1,2,3。
所以我认为另一种解决方案是利用xticks的位置和情节的细节
例如使用
ax.set_xlim(-1.5,2.5)
将它们放得更近。
位置:
类似数组,可选
设置框的位置。刻度和限制将自动设置为与位置匹配。默认为范围(1,N+1),其中N是要绘制的框数
这应该能行 这是我尝试过的第一种方法,但运气不好。我认为原因是刻度之间的空间总是相对于可用的空间。因此,如果我将刻度移近原点,右侧将有更多的可用空间,绘图也将“放大”以获取可用空间。至于
xlim()
,它只允许控制从刻度到原点的空间,而不允许控制刻度之间的空间。我选择这个作为答案,因为设置纵横比确实是我所缺少的,但最终解决方案还意味着改变方框的宽度,根据@tcaswell的回答,这实际上完全弄乱了y记号和y标签,因为它只是在放大。实际上,它并没有像人们要求的那样减少方框图之间的距离。为了澄清这一点,可以通过调整比例(使用aspect
或figsize
)或x轴限制(使用xlim
或“缩放”)来改变方框之间的明显距离。框之间的真实距离(很像散点图上的点)不能从其固定的x值更改(1,2,…
)。这也会使盒子变窄,因此菲利佩建议改变盒子的宽度也是明智的。我不确定这两种方法会如何影响y轴刻度和标签@b00n12。我建议调整纵横比和箱线图宽度的参数。是的,我已经解决了,谢谢。我只是想指出,这并不能真正回答问题。你的评论实际上是完全正确的!请从链接中引用相关内容。这使得你的答案更容易阅读,一旦链接断开,相关内容就会留在你的答案上。嗨,Joooeey。。请建议最好的方法。。非常感谢。
ax.set_xlim(-1.5,2.5)