【发布时间】:2015-11-16 16:10:05
【问题描述】:
我正在构建一个函数来绘制自定义箱线图。我希望盒子的表面是简单的,有轻微的透明度,我希望每个盒子表面周围都有一条细实线(不透明)。
我一直在尝试通过在调用matplotlib.pyplot.boxplot 后设置框的参数,如下所示。
当我在屏幕上查看情节时,它会显示我想要的内容。但是,当我使用 matplotlib.pyplot.savefig("output.pdf") 创建 pdf 时,这条线不是实心的,它也是透明的。当我放大 pdf 文件时,这种透明度很明显。
有没有人知道如何使线不透明,同时保持箱形图面的透明度?
提前致谢。
from matplotlib import pyplot as plt
import numpy as np
data = {}
data['a'] = np.arange(12)+1
data['b'] = np.arange(14)+1
data['c'] = np.arange(8)+1
cols = ['red', 'blue', 'green']
controls = ['trt_a', 'trt_b', 'trt_c']
fig, ax = plt.subplots()
boxplot_dict = ax.boxplot([data[x] for x in ['a', 'b', 'c']], \
positions = [1, 1.5, 2], labels = controls, \
patch_artist = True, widths = 0.25)
for b, c in zip(boxplot_dict['boxes'], cols):
b.set_alpha(0.6)
b.set_edgecolor(c) # or try 'black'
b.set_facecolor(c)
b.set_linewidth(1)
ax.set_ylim([0,16])
plt.savefig("test_boxplot.pdf")
plt.close()
我已经尝试了针对直方图 here 给出的建议,方法是将颜色设置为包含 alpha 级别 [(0, 0, 1, 0.6), (1, 0, 0, 0.6), (0, 1, 0, 0.6)],但这似乎不适用于箱形图。
【问题讨论】:
标签: python matplotlib boxplot alpha-transparency