Fab*_*nna 6 python matplotlib pandas
我正在运行Pandas 0.16.2和Matplotlib 1.4.3.我有这个问题着色由以下代码生成的boxplot的中位数:
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
fig, ax = plt.subplots()
medianprops = dict(linestyle='-', linewidth=2, color='blue')
bp = df.boxplot(medianprops=medianprops)
plt.show()
Run Code Online (Sandbox Code Playgroud)
返回:
看来该color设置未被读取.仅更改线条样式和线宽的设置,图表会正确反应.
medianprops = dict(linestyle='-.', linewidth=5, color='blue')
Run Code Online (Sandbox Code Playgroud)
任何人都可以重现它吗?
查看代码,DataFrame.boxplot()有一些特殊的代码来处理取代kws传递给matplotlib的不同元素的颜色boxplot.从理论上讲,似乎有一种方法可以传递一个color=包含带键的字典的参数,'boxes', 'whiskers', 'medians', 'caps'但是在boxplot()直接调用时我似乎无法使其工作.
但是,这似乎有效:
df.plot(kind='box', color={'medians': 'blue'},
medianprops={'linestyle': '--', 'linewidth': 5})
Run Code Online (Sandbox Code Playgroud)
实际上,以下解决方法效果很好,dict从 boxplot 命令返回 a :
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
fig, ax = plt.subplots()
bp = df.boxplot(return_type='dict')
Run Code Online (Sandbox Code Playgroud)
然后直接将颜色和线宽分配给中位数:
[[item.set_color('r') for item in bp[key]['medians']] for key in bp.keys()]
[[item.set_linewidth(0.8) for item in bp[key]['medians']] for key in bp.keys()]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2842 次 |
| 最近记录: |