gpt4 book ai didi

python - matplotlib 子图箱线图隐藏一些轴标签

转载 作者:行者123 更新时间:2023-12-01 03:03:57 25 4
gpt4 key购买 nike

我想迭代列表并绘制每个列表的箱线图。由于数据无法全部装入内存,因此我无法分配要绘制的预定义数量的箱线图,因此我使用 subplot 函数迭代添加图。

我的问题是轴标签没有添加到箱线图中,并且只显示最后一个标签。如何使用子图迭代地标记箱线图。

下面是我想要做的事情的简化示例。尽管实际上我实际上是在循环中回收相同的列表,而不是迭代列表的列表,但它可以说明问题。可以看出,y 轴中仅设置了“lb”,并且第一个底部箱线图未显示“la”,

谢谢。

%matplotlib inline
import matplotlib.pyplot as plt

la = [24, 28, 31, 34, 38, 40, 41, 42, 43, 44]
lb = [5, 8, 10, 12, 15, 18, 21, 25, 30, 39]
names = ['la', 'lb']
myList = [la] + [lb]
myList

# set fig for boxplots
fig, ax = plt.subplots(sharex=True)
# Add a horizontal grid to the plot
ax.xaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.5)
ax.set_axisbelow(True)
ax.set_title('Some Title')

for i,l in enumerate(myList):
ax.boxplot(l, vert=False, positions = [i])
ax.set_yticklabels([names[i]])

ax.set_ylim(-0.5, len(myList)-0.5)

/Users/pmca/Desktop/Screen_Shot_2017-04-23_at_16.24.25.png

最佳答案

在循环内设置标签将覆盖之前的刻度标签。所以标签应该设置在循环之外。您还需要确保两个标签实际上都有勾号。

解决方案是添加

ax.set_yticks(range(len(myList)))
ax.set_yticklabels(names)

在循环之外。

完整代码:

import matplotlib.pyplot as plt

la = [24, 28, 31, 34, 38, 40, 41, 42, 43, 44]
lb = [5, 8, 10, 12, 15, 18, 21, 25, 30, 39]
names = ['la', 'lb']
myList = [la] + [lb]
myList

# set fig for boxplots
fig, ax = plt.subplots(sharex=True)
# Add a horizontal grid to the plot
ax.xaxis.grid(True, linestyle='-', which='major', color='lightgrey', alpha=0.5)
ax.set_axisbelow(True)
ax.set_title('Some Title')

for i,l in enumerate(myList):
ax.boxplot(l, vert=False, positions = [i])

ax.set_yticks(range(len(myList)))
ax.set_yticklabels(names)

ax.set_ylim(-0.5, len(myList)-0.5)

plt.show()

enter image description here

关于python - matplotlib 子图箱线图隐藏一些轴标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com