python设置x记号标签

2024-09-27 21:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧=

from collections import OrderedDict
dico = OrderedDict({"Cisco" :54496.923851069776,
"Citrix" :75164.2973859488,
"Datacore/veritas/docker/quest" :7138.499540816414,
"Dell / EMC" : 34836.42983441935,
"HPE": 40265.33070005489,
"IBM Hard Ware / IBM services" : 220724.89293359307,
"Microsoft cloud" : 3159.7624999999994,
"Netapp":48898.21721115539,
"Nutanix / Lenovo DCG":38761.815197677075,
"Oracle/Microfocus":100877.21884162886,
"Other brands":13825.151033348895,
"VM Ware":21267.66907692287,
"Veeam / Redhat":5006.715599405339})

我可以描绘:

df = pd.DataFrame(list(dico.values()))
df.index = dico.keys()
ax = df.sort(0).plot.barh()

enter image description here

但是我想格式化xtick标签:

ax = df.sort_values(0).plot.barh()

new_labels = [str(pow(10,i-1))+"€" if i>0 else str(i) for i, tick_label in enumerate(ax.get_xticklabels())]
print(new_labels)
ax.set_xticklabels(new_labels)

给予:

[“0”、“1欧元”、“10欧元”、“100欧元”、“1000欧元”、“10000欧元”] [enter image description here]2

为什么我不能在新标签列表中得到20000? 为什么不显示10000 it本身?你知道吗


Tags: dfnewlabelsplot标签axsortibm
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:12

你得不到20000,因为你正在把10的力量创造成pow(10,i-1)。这在数学上不可能来自这个方程。此外,不会显示10000,因为您只需使用ax.set_xticklabels重置已经存在的xtick的标签。由于第一个绘图中只有5个主刻度,因此根据定义,只能创建5个标签,分别为0、1、10、100、1000。你知道吗

要获得所需的内容,只需将代码的最后三行(打印后)替换为:

locs = ax.get_xticks()
labels = [ '{}{}'.format(int(i), '\u20ac') for i in locs]
ax.set_xticklabels(labels)

输出

enter image description here

相关问题 更多 >

    热门问题