matplotlib字符串作为x轴上的标签

matplotlib字符串作为x轴上的标签,matplotlib,Matplotlib,我正在构建一个用于数据分析的小工具,我已经到了必须绘制准备好的数据的地步。前面的代码生成以下两个长度相等的列表 t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '

我正在构建一个用于数据分析的小工具,我已经到了必须绘制准备好的数据的地步。前面的代码生成以下两个长度相等的列表

t11 = ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55']

t12 = [173, 135, 141, 148, 140, 149, 152, 178, 135, 96, 109, 164, 137, 152, 172, 149, 93, 78, 116, 81, 149, 202, 172, 99, 134, 85, 104, 172, 177, 150, 130, 131, 111, 99, 143, 194]
基于此,我想用matplotlib.plt.hist构建一个直方图。然而,有几个问题: 1.t11[x]和t12[x]为所有x连接。其中t11[x]实际上是一个字符串。它代表一种特定的检测器组合。例如:“01”表示在第一个探测器的第0段和第二个探测器的第1段进行了检测。我的目标是将t11中的每个条目作为x轴上的标记点。t12条目将定义t11条目上方的条带高度(在对数y轴上)

如何配置这样的x轴?
2.这对我来说都是新鲜事。我在文档中找不到任何相关内容。很可能是因为我不知道该找什么。所以:我想要实现的目标是否有一个“官方”名称。这对我也有很大帮助。

在matplotlib行话中,您正在寻找一种设置自定义刻度的方法

使用
pyplot.hist
快捷方式似乎无法实现这一点。你需要一步一步地塑造自己的形象。关于堆栈溢出的问题,这里已经有了一个答案,这个答案与您的问题非常相似,应该让您开始:

使用命令


对于matplotlib的面向对象API,可以使用以下代码在
轴的
x-ticks
上打印自定义文本:

x = np.arange(2,10,2)
y = x.copy()
x_ticks_labels = ['jan','feb','mar','apr','may']

fig, ax = plt.subplots(1,1) 
ax.plot(x,y)

# Set number of ticks for x-axis
ax.set_xticks(x)
# Set ticks labels for x-axis
ax.set_xticklabels(x_ticks_labels, rotation='vertical', fontsize=18)

首先,您需要访问axis对象:

fig, ax = plt.subplots(1,1)
然后:


为什么在两行中都使用
len(t12)
?一个不应该是
len(t11)
?@User通常是的,你是对的。调用
xticks
时,您通常希望刻度数等于标签数。在这种情况下,虽然两个列表的长度是相同的,所以这并不重要。
bar
有一个参数
tick\u label
,可以用来代替
plt.xticks
,即
plt.bar(…,tick\u label=t11)
fig, ax = plt.subplots(1,1)
ax.set_yticks([x for x in range(-10,11)])
ax.set_yticklabels( ['{0:2d}'.format(abs(x)) for x in range(-10, 11)])