python - matplotlib - 为 fiddle 图制作标签

标签 python matplotlib label

我通常使用方法“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)

enter image description here

关于python - matplotlib - 为 fiddle 图制作标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33864578/

相关文章:

python - 将列标题转换为行值

python - 定义 df.to_sparse() 结果的数据类型

python - Python 导入错误(linux)

python - 如何为 matplotlib 的 drawgreatcircle 函数制作动画?

r - 创建一个具有更多级别的因子,默认情况下在 R 中使用

Python:函数中调用的尚 undefined variable - 但有效吗?

python - 求解当前代码的非线性曲线拟合

python - 使用 pandas 和 ipywidgets 创建交互式绘图,使用数据帧列中的值作为输入

jquery - 设置复选框标签的颜色

java - 使用 SWT 更改文本时标签被切断