我有一个数据帧=
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()
但是我想格式化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欧元”] []2
为什么我不能在新标签列表中得到20000? 为什么不显示10000 it本身?你知道吗
你得不到
20000
,因为你正在把10
的力量创造成pow(10,i-1)
。这在数学上不可能来自这个方程。此外,不会显示10000
,因为您只需使用ax.set_xticklabels
重置已经存在的xtick的标签。由于第一个绘图中只有5个主刻度,因此根据定义,只能创建5个标签,分别为0、1、10、100、1000。你知道吗要获得所需的内容,只需将代码的最后三行(打印后)替换为:
输出
相关问题 更多 >
编程相关推荐