我通常使用方法“bar”中的参数“label”按以下方式为条形图制作标签。
axes[0].bar(x, y, bar_width, label='abc')
axes[0].legend()
现在我想绘制 fiddle 图并为每个集合制作标签,如下所示,但它不起作用,因为“violinplot”没有参数“label”。
axes[0].violinplot(data1, label='abc1')
axes[1].violinplot(data2, label='abc2')
谁能帮我为每个系列制作一个标签?
最佳答案
这是我对多个 fiddle 图的解决方案。请注意,它从给定的 fiddle 图的第一个阴影区域获取色 block 颜色——如果有多种颜色,这可以更改为执行其他操作,或者您可以使用 violin 获取垂直条的颜色["cbars"].get_color().flatten()
.
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import numpy as np
labels = []
def add_label(violin, label):
color = violin["bodies"][0].get_facecolor().flatten()
labels.append((mpatches.Patch(color=color), label))
positions = np.arange(3,13,3)
data = np.random.randn(1000, len(positions))
add_label(plt.violinplot(data, positions), "Flat")
positions = np.arange(1, 10, 2)
data = np.random.randn(1000, len(positions)) + positions
add_label(plt.violinplot(data, positions), "Linear")
positions = np.arange(2, 11, 1)
data = np.random.randn(1000, len(positions)) + positions ** 2 / 4
add_label(plt.violinplot(data, positions), "Quadratic")
plt.legend(*zip(*labels), loc=2)
关于python - matplotlib - 为 fiddle 图制作标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33864578/