Как мне создать хороший одномерный график? - PullRequest
0 голосов
/ 03 июня 2018
df = pd.DataFrame({"labels": ["This is a long label", 
                     "And this is also a long label", 
                     "Wow its a label thats pretty long", 
                     "Can you follow the pattern here?"],
                   "values": [2.2, 1.2, 3.0, 4.1]})

В реальном примере у меня около 15 меток и значений.Учитывая это, я хотел бы отобразить одну ось с метками 2.2, 1.2, 3.0 и 4.1, каждая из которых помечена соответствующей меткой.Мои метки длинные, поэтому я думаю, что они должны отображаться по диагонали или с помощью какого-либо другого устройства, чтобы метки оставались разборчивыми.

Уточнение

Чтобы быть четким, я хочу одну ось и никакой графикполе.Она будет похожа на числовую линию с галочками для значений - 2.2, 1.2 и т. Д. И надписями, обозначающими тики.

Вот очень грубый набросок идеи: enter image description here

Я экспериментирую, но не нашел способа сделать эту панду или морского рожка.Это вообще возможно?

1 Ответ

0 голосов
/ 03 июня 2018

построение точечной диаграммы, скрытие шипов и ось X с помощью функции аннотирования для размещения текста.Наконец, играйте с позиционированием, пока выравнивание не покажется правильным

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.xaxis.set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.scatter([0]*len(df), df['values'], marker='d', s=100, c='r')
ax.set_xlim(-0.1,5)
for _, r in df.iterrows():
    ax.annotate(r['labels'], xy=(0.20, r['values']))

vertical number line

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