在 matplotlib 中使用 dict 值作为 xticks

问题描述 投票:0回答:3

我创建了一个包含 5 个不同时间点的折线图,每个时间点包含 6 个不同的值。为了避免误差线重叠,我为每个时间点的每个值创建了一个偏移量,然后添加了偏移量。

现在时间点的名称为浮点数(1-5),但是我希望时间点具有诸如“before”、“after1”、“after2”、...

之类的标签

我尝试分配一个包含原始浮点数作为键和字符串作为值的字典(例如 {'before': 1}。

我不知道如何将字典值包含为 xticks。已经尝试过 set_xticks(name_dict),但这不起作用。 Xlabel 用于整体轴名称。这里有地图选项吗?有任何想法吗?谢谢!

python matplotlib label
3个回答
3
投票

假设你的字典是这样的:

name_dict = {'before': 1, 'after1': 2, 'after2': 3, 'after3': 3, 'after4': 4}

首先,你需要起诉

set_xticks
指定x个刻度的位置

ax.set_xticks(name_dict.values())

其次,使用

set_xticklabels
在这些位置显示标签

ax.set_xticklabels(name_dict.keys())

0
投票

如果字典中的值顺序相同,则可以使用

set_xticks(name_dict.values)
。如果它们的顺序错误,您可以使用简单的
for
循环对它们重新排序。


0
投票

matplotlib v3.8
开始, ax.set_xticks() 需要一个类似列表的内容,并且 ax.set_xticks(dic.keys()) 会抛出:
ValueError: 'locs' must be 1D with shape (N,), but your input has shape ()

更新的解决方案是

dic= {'before': 1, 'after1': 2, 'after2': 3, 'after3': 3, 'after4': 4}
ax.set_xticks(list(dic.values()))
ax.set_xticklabels(dic.keys())
© www.soinside.com 2019 - 2024. All rights reserved.