首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在海运盒图中调整晶须的大小?

如何在海运盒图中调整晶须的大小?
EN

Stack Overflow用户
提问于 2019-04-25 13:56:14
回答 1查看 2K关注 0票数 4

我想在下面的方框里把胡须的线条画得更宽。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame({'Data': np.random.random(100), 'Type':['Category']*100})

fig, ax = plt.subplots()

# Plot boxplot setting the whiskers to the 5th and 95th percentiles
sns.boxplot(x='Type', y='Data', data=data, color = 'gray', whis = [5,95])

# Adjust boxplot and whisker line properties
for p, artist in enumerate(ax.artists):
    artist.set_edgecolor('blue')
    for q in range(p*6, p*6+6):
        line = ax.lines[q]
        line.set_color('pink')

我知道如何调整晶须的颜色和线宽,但我还没有想出如何增加胡须的长度。我最接近的是尝试使用line.set_xdata([q/60-0.5, q/60+0.5]),但是我得到了错误

代码语言:javascript
运行
复制
ValueError: shape mismatch: objects cannot be broadcast to a single shape    

理想情况下,我希望晶须百分位数的线条与盒子的宽度相同。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-25 14:27:37

正如您已经注意到的,每个框有6行(因此您的p*6索引)。

带有索引p*6+4的行具有框的宽度(即框内的中线)。所以我们可以用它来设置其他线条的宽度。

要更改的行具有索引p*6+2p*6+3

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame({'Data': np.random.random(100), 'Type':['Category']*100})

fig, ax = plt.subplots()

# Plot boxplot setting the whiskers to the 5th and 95th percentiles
sns.boxplot(x='Type', y='Data', data=data, color = 'gray', whis = [5,95])

# Adjust boxplot and whisker line properties
for p, artist in enumerate(ax.artists):
    artist.set_edgecolor('blue')
    for q in range(p*6, p*6+6):
        line = ax.lines[q]
        line.set_color('pink')

    ax.lines[p*6+2].set_xdata(ax.lines[p*6+4].get_xdata())
    ax.lines[p*6+3].set_xdata(ax.lines[p*6+4].get_xdata())

这也适用于多个框的示例:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x="day", y="total_bill", data=tips)

# Adjust boxplot and whisker line properties
for p, artist in enumerate(ax.artists):
    artist.set_edgecolor('blue')
    for q in range(p*6, p*6+6):
        line = ax.lines[q]
        line.set_color('pink')

    ax.lines[p*6+2].set_xdata(ax.lines[p*6+4].get_xdata())
    ax.lines[p*6+3].set_xdata(ax.lines[p*6+4].get_xdata())

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55851011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档