我想使用matplotlib绘制随机数量的Bar。我分别设置了每个tick_label
,但只显示了最后一个。
哪一个是正确的?使用tick_label
属性还是使用图解set_xticks
函数?
import matplotlib.pyplot as plt
import random as r
for i in range(10):
plt.bar(i,i*2, r.randint(1,2) , tick_label=i)
plt.show()
答案 0 :(得分:1)
假设您无法预先确定小节的数量(进入循环之前),则可以遍历数字并使用以下代码即时设置刻度线。如果您有文本标签,答案的底部还会有另一个示例来处理字符串。
import matplotlib.pyplot as plt
import random as r
# initialize labels list
ticklabels = list()
for i in range(10):
# add a bar to the plot
plt.bar(i, r.randint(1, 2))
# append tick to the list & set current axes with
ticklabels.append(i)
plt.xticks(range(len(ticklabels)), labels=ticklabels)
plt.show()
这将产生以下图片
然后,如果您还偶然在循环中获得了一个字符串标签,则可以将其与"label"
函数的plt.xticks
关键字参数一起使用:
import matplotlib.pyplot as plt
import random as r
from string import ascii_uppercase as letters
ticklabels = list()
for i in range(10):
# add a bar to the plot
plt.bar(i, r.randint(1, 2))
# append current tick label
ticklabels.append(letters[r.randint(1, 25)])
# set xaxis ticklabel
plt.xticks(range(len(ticklabels)), labels=ticklabels)
这将产生下面的图片(带有随机标签)。
答案 1 :(得分:0)