更改熊猫中箱线图的面色

Posted

技术标签:

【中文标题】更改熊猫中箱线图的面色【英文标题】:Change the facecolor of boxplot in pandas 【发布时间】:2017-01-10 20:19:42 【问题描述】:

我需要更改使用pandas 实用函数绘制的箱线图的颜色。我可以使用color 参数更改大多数属性,但不知道如何更改框的facecolor。有人知道怎么做吗?

import pandas as pd
import numpy as np
data = np.random.randn(100, 4)
labels = list("ABCD")
df = pd.DataFrame(data, columns=labels)
props = dict(boxes="DarkGreen", whiskers="DarkOrange", medians="DarkBlue", caps="Gray")
df.plot.box(color=props)

【问题讨论】:

我认为您将需要为此使用原始 matplotlib 或 seaborn。 pandas 的绘图功能只是为了方便。 【参考方案1】:

按照建议,我最终创建了一个函数来绘制这个,使用原始matplotlib

def plot_boxplot(data, ax):
    bp = ax.boxplot(data.values, patch_artist=True)

    for box in bp['boxes']:
        box.set(color='DarkGreen')
        box.set(facecolor='DarkGreen')

    for whisker in bp['whiskers']:
        whisker.set(color="DarkOrange")

    for cap in bp['caps']:
        cap.set(color="Gray")

    for median in bp['medians']:
        median.set(color="white")

    ax.axhline(0, color="DarkBlue", linestyle=":")

    ax.set_xticklabels(data.columns)

【讨论】:

【参考方案2】:

虽然我仍然在 pandas 的绘图界面上推荐 seaborn 和 raw matplotlib,但事实证明,您可以将 patch_artist=True 作为 kwarg 传递给 df.plot.box,这会将其作为 kwarg 传递给 df.plot,这将传递给matplotlib.Axes.boxplot

import pandas as pd
import numpy as np
data = np.random.randn(100, 4)
labels = list("ABCD")
df = pd.DataFrame(data, columns=labels)
props = dict(boxes="DarkGreen", whiskers="DarkOrange", medians="DarkBlue", caps="Gray")
df.plot.box(color=props, patch_artist=True)

【讨论】:

太棒了!这行得通。是的,同意 - 我通常也喜欢直接使用matplotlib 今天这救了我 ;) 谢谢

以上是关于更改熊猫中箱线图的面色的主要内容,如果未能解决你的问题,请参考以下文章

关R语言实战中箱线图关于异常值理解的问题

更改熊猫箱线图子图中各个框的颜色

可视化实验十二:利用Python绘制箱线图折线图

可视化实验十二:利用Python绘制箱线图折线图

向熊猫数据框箱线图添加标签?

为熊猫箱线图(groupby)设置无标题