питон - панды - установка меток тиков - PullRequest
0 голосов
/ 24 августа 2018

У меня есть датафрейм =

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

Почему я не получаю 20 000 в списке новых ярлыков? Почему 10 000 само по себе не отображается?

1 Ответ

0 голосов
/ 24 августа 2018

Вы не получаете 20000, потому что вы создаете способности 10 как pow(10,i-1). Это математически не возможно из этого уравнения. Более того, 10000 не отображается, потому что вы просто используете ax.set_xticklabels для сброса меток уже существующих xticks. Поскольку на первом графике у вас есть только 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...