【问题标题】:Adjust spacing on X-axis in python boxplots在 python 箱线图中调整 X 轴上的间距
【发布时间】:2019-08-11 03:38:22
【问题描述】:

我在 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 )   

输出图:

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

输出图2:

【问题讨论】:

  • 箱线图之间的间距是一个数据单元。轴大约是两个数据单元宽。如果将轴限制为 1.3 个单位,则框之间的相对间距会更大,并且它们在屏幕上会显得更远。不确定这就是你所追求的。在这里,对预期结果的清晰描述可能会有所帮助。
  • 作为骗子关闭它。使用dataframe.boxplot("value", by = "name", positions=[1,10]) 在两个框之间留出较大的间距。根据您希望它们彼此之间的距离来选择数字
  • 另一个相关答案here
  • @Echan:检查标记的骗子上的第一个答案。一旦可以在 DataFrame 中插入一列 x 值,然后将其用作 x 参数。稍后,可以用您的字符串替换 x-ticklabels。检查我发布的第二个链接

标签: python matplotlib plot


【解决方案1】:

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

ax.set_xlim(0, 1)

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

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

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

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

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2016-06-22
    • 2016-11-04
    • 2019-12-31
    • 2019-12-07
    • 2021-12-05
    • 2023-04-10
    相关资源
    最近更新 更多