我想给matplotlib画的箱线图均值和中位数线加上图例
时间: 2023-08-07 20:41:17 浏览: 46
要为matplotlib画的箱线图添加图例,可以使用plt.legend()函数。首先,需要在画图时给每个箱线图添加标签,然后调用plt.legend()函数即可。
下面是一个例子,展示如何为箱线图添加均值和中位数线的图例:
```
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
# 绘制箱线图,添加标签
plt.boxplot(data, labels=['A', 'B', 'C'])
# 绘制均值和中位数线
means = [np.mean(d) for d in data]
medians = [np.median(d) for d in data]
plt.plot(range(1, 4), means, label='Mean', color='red', marker='o')
plt.plot(range(1, 4), medians, label='Median', color='blue', marker='o')
# 添加图例
plt.legend()
plt.show()
```
这段代码会在图表中显示三个箱线图,并在每个箱线图的顶部绘制均值和中位数线。然后,使用plt.legend()函数添加图例,图例会显示在图表的右上角。
相关问题
用matplotlib画箱线图,用横线标出中位数和均值,加上图例
好的,以下是用matplotlib画箱线图,并标出中位数和均值的代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.normal(size=(100,))
# 画箱线图
fig, ax = plt.subplots()
ax.boxplot(data)
# 标出中位数和均值
median = np.median(data)
mean = np.mean(data)
ax.axhline(median, color='r', linestyle='-', label='Median')
ax.axhline(mean, color='g', linestyle='-', label='Mean')
# 添加图例
ax.legend()
plt.show()
```
这段代码生成了一个随机数据的箱线图,并在图中标出了中位数和均值,也加上了图例。你可以根据需要修改数据并运行代码。
用matplotlib画4个箱线图,用横线标出中位数和均值,加上图例
好的,以下是用matplotlib画四个箱线图,并标出中位数和均值的代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成四组随机数据
data1 = np.random.normal(size=(100,))
data2 = np.random.normal(loc=2.0, size=(100,))
data3 = np.random.normal(loc=3.0, size=(100,))
data4 = np.random.normal(loc=4.0, size=(100,))
# 画四个箱线图
fig, axs = plt.subplots(2, 2, figsize=(8, 8))
axs[0, 0].boxplot(data1)
axs[0, 1].boxplot(data2)
axs[1, 0].boxplot(data3)
axs[1, 1].boxplot(data4)
# 标出中位数和均值
medians = [np.median(data1), np.median(data2), np.median(data3), np.median(data4)]
means = [np.mean(data1), np.mean(data2), np.mean(data3), np.mean(data4)]
for i in range(len(medians)):
axs[i//2, i%2].axhline(medians[i], color='r', linestyle='-', label='Median' if i==0 else None)
axs[i//2, i%2].axhline(means[i], color='g', linestyle='-', label='Mean' if i==0 else None)
# 添加图例
axs[0, 0].legend()
plt.show()
```
这段代码生成了四个随机数据的箱线图,并在图中标出了中位数和均值,也加上了图例。你可以根据需要修改数据并运行代码。