График с нечисловыми данными по оси х (например, даты) - PullRequest
12 голосов
/ 07 августа 2011

Я хотел бы построить числовые данные по нечисловым данным, скажем что-то вроде этого:

import matplotlib.pyplot as pl
x=['a','b','c','d']
y=[1,2,3,4]
pl.plot(x,y)

Однако, с помощью пакетов графиков matplotlib вы получаете предупреждение о том, что данные не являются плавающими (ValueError: invalidлитерал для float (): а).

В своих 'How-to' они предлагают сначала разместить числовые данные на оси x, а затем отформатировать их.Есть ли способ сделать это напрямую (как указано выше)?

Ответы [ 2 ]

14 голосов
/ 07 августа 2011

Используйте функцию xticks .

import matplotlib.pyplot as pl
xticks=['a','b','c','d']
x=[1,2,3,4]
y=[1,2,3,4]
pl.plot(x,y)
pl.xticks(x,xticks)
pl.show()
12 голосов
/ 07 августа 2011
import matplotlib.pyplot as plt
x = ['a','b','c','d']
y = [1,2,3,4]
plt.plot(y)
plt.xticks(range(len(x)), x)
plt.show()

enter image description here

На дополнительном примечании даты в этом смысле являются числовыми (т. Е. Имеют внутренний порядок и интервал).

Matplotlib обрабатывает временные данные довольно хорошо и совсем иначе, чем в приведенном выше примере. пример в разделе примеров matplotlib , но он фокусируется на демонстрации нескольких разных вещей.В общем, вы просто используете либо plot_date, либо просто выводите данные и вызываете ax.xaxis_date() (или yaxis_date), чтобы сказать matplotlib использовать различные локаторы и тикеры даты.

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