gpt4 book ai didi

python - 在 python 箱线图中调整 X 轴上的间距

转载 作者:行者123 更新时间:2023-12-04 00:03:22 25 4
gpt4 key购买 nike

我在 python 3.x 中使用 sns.boxplotpandas.DataFrame.boxplot 绘制箱线图。

我想问是否可以调整 boxplot 中框之间的间距,因此 Group_b 的框比输出图中的 Group_a 的框更远。谢谢

代码:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

dict_a = {'value':[1,2,3,7,8,9],'name':['Group_a']*3+['Group_b']*3}
dataframe = pd.DataFrame(dict_a)
sns.boxplot( y="value" , x="name" , data=dataframe )

输出图:

enter image description here

dataframe.boxplot("value" ,by = "name" )

输出图2:

enter image description here

最佳答案

两个框之间的距离由 x 轴范围决定。对于框之间数据单元的恒定距离,使它们间隔或多或少分开的是该数据单元距离与轴上显示的整体数据空间相比的分数。例如,在 seaborn 的情况下,第一个盒子位于 x=0,第二个盒子位于 x=1。差值为 1 个单位。因此,通过将 x 轴限制设置为这些精确限制,可以实现两个箱线图之间的最大距离,

ax.set_xlim(0, 1)

当然,这会减少每个盒子的一半。

enter image description here

所以更有用的值是 ax.set_xlim(0-val, 1+val) ,其中 val 位于框的宽度范围内。

需要提到的是, Pandas 使用不同的单位。第一个框在 x=1 处,第二个框在 x=2 处。因此需要类似 ax.set_xlim(1-val, 2+val) 的东西。

下面会在图中添加一个 slider 来查看不同值的效果。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

dict_a = {'value':[1,2,3,7,8,9],'name':['Group_a']*3+['Group_b']*3}
dataframe = pd.DataFrame(dict_a)

fig, (ax, ax2, ax3) = plt.subplots(nrows=3,
gridspec_kw=dict(height_ratios=[4,4,1], hspace=1))

sns.boxplot( y="value" , x="name" , data=dataframe, width=0.1, ax=ax)
dataframe.boxplot("value", by = "name", ax=ax2)


from matplotlib.widgets import Slider
slider = Slider(ax3, "", valmin=0, valmax=3)

def update(val):
ax.set_xlim(-val, 1+val)
ax2.set_xlim(1-val, 2+val)

slider.on_changed(update)


plt.show()

enter image description here

关于python - 在 python 箱线图中调整 X 轴上的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com