更改熊猫中箱线图的面色
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
。
今天这救了我 ;) 谢谢以上是关于更改熊猫中箱线图的面色的主要内容,如果未能解决你的问题,请参考以下文章