我正在尝试使用 matplotlib 从 pandas 数据帧创建箱线图。
我能够获取箱线图并更改轮廓和中线的线宽,但我想将所有颜色更改为黑色。我尝试了 Pandas boxplot 中描述的几种方法:设置 box、median、mean 的颜色和属性以及Change the facecolor of boxplot in pandas。
然而,他们都不适合我的情况。
有人可以解决这些问题吗?
这是我的代码:
版本:python 3.6.5
import pandas as pd
from pandas import DataFrame, Series
import matplotlib.pyplot as plt
df = pd.read_excel("training.xls")
fig = plt.figure()
ax = fig.add_subplot(111)
boxprops = dict(color="black",linewidth=1.5)
medianprops = dict(color="black",linewidth=1.5)
df.boxplot(column=["MEAN"],by="SrcID_Feat",ax=ax,
boxprops=boxprops,medianprops=medianprops)
plt.grid(False)
Run Code Online (Sandbox Code Playgroud)
结果

有没有办法将熊猫箱图中胡须的线型改为' - '?默认似乎是' - '.
我试过了:
color = dict(boxes='black', whiskers='black', medians='red', caps='black')
styles=dict(whiskers='-')
bp = df.plot.box(color=color, style=styles)
Run Code Online (Sandbox Code Playgroud)
然而,虽然颜色按照我想要的方式变换,但样式输入似乎根本不会影响绘图.
我也试过了
boxprops = dict(linewidth=1.0, color='black')
whiskerprops = dict(linestyle='-',linewidth=1.0, color='black')
plt.figure()
df.boxplot(boxprops=boxprops, whiskerprops=whiskerprops)
Run Code Online (Sandbox Code Playgroud)
这里,df.boxplot根本不接受输入.
Python中的普通matplotlib boxplot命令返回一个字典,其中包含方框,中位数,胡须,传单和大写字母的键.这使得造型非常简单.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Create a dataframe and subset it for a boxplot
df1 = pd.DataFrame(rand(10), columns=['Col1'] )
df1['X'] = pd.Series(['A','B','A','B','A','B','A','B','A','B'])
boxes= [df1[df1['X'] == 'A'].Col1, df1[df1['X'] == 'B'].Col1]
# Call the standard matplotlib boxplot function,
# which returns a dictionary including the parts of the graph
mbp = plt.boxplot(boxes)
print(type(mbp))
# This dictionary output makes styling the boxplot easy
plt.setp(mbp['boxes'], color='blue')
plt.setp(mbp['medians'], color='red')
plt.setp(mbp['whiskers'], color='blue')
plt.setp(mbp['fliers'], color='blue')
Run Code Online (Sandbox Code Playgroud)
Pandas库为其分组(分层索引)数据帧提供了"优化"boxplot函数.但是,它不返回每个组的几个字典,而是返回一个matplotlib.axes.AxesSubplot对象.这使得造型非常困难.
# …Run Code Online (Sandbox Code Playgroud) 我需要改变使用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)
Run Code Online (Sandbox Code Playgroud)