将plt.plot(x,y)与plt.boxplot()结合使用

19

我正在尝试将一个普通的matplotlib.pyplot的plt.plot(x,y)和变量y作为变量x的函数与一个箱线图结合起来。然而,我只想在x的某些(可变)位置上绘制箱线图,但这似乎在matplotlib中不起作用?

2个回答

29

你是否想要类似这样的效果?boxplot函数中的positions参数可以让你将箱线图放置在任意位置。

import matplotlib.pyplot as plt
import numpy as np

# Generate some data...
data = np.random.random((100, 5))
y = data.mean(axis=0)
x = np.random.random(y.size) * 10
x -= x.min()
x.sort()

# Plot a line between the means of each dataset
plt.plot(x, y, 'b-')

# Save the default tick positions, so we can reset them...
locs, labels = plt.xticks() 

plt.boxplot(data, positions=x, notch=True)

# Reset the xtick locations.
plt.xticks(locs)
plt.show()

在此输入图片描述


是的,谢谢,这正是我想要的。我一直在尝试在箱线图中做类似于plt.plot([x,y])的事情,但失败了...看来我误解了kwarg“positions”。 - ruben baetens
+1 表示展示如何保留 xtick 位置。在处理坐标轴时,命令为 locs = ax.get_xticks()ax.set_xticks(locs) - MrCyclophil
除了我上面的评论之外,实际上还需要添加 ax.set_xticklabels(locs) 才能正确获取标签。 - MrCyclophil
不需要使用seaborn就能得到很好的答案!太棒了! - seralouk

0

以下是我所使用的方法:

  1. 绘制箱线图
  2. 获取箱线图X轴刻度位置
  3. 将箱线图X轴刻度位置用作线图的X轴数值
# Plot Box-plot
ax.boxplot(data, positions=x, notch=True)
# Get box-plot x-tick locations
locs=ax.get_xticks()

# Plot a line between the means of each dataset
# x-values = box-plot x-tick locations
# y-values = means
ax.plot(locs, y, 'b-')



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接