Ответ 1
Используйте функцию 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()
Я хотел бы построить числовые данные против не численных данных, скажем примерно так:
import matplotlib.pyplot as pl
x=['a','b','c','d']
y=[1,2,3,4]
pl.plot(x,y)
Однако, при использовании пакетов plot matplotlib вы получаете предупреждение о том, что данные не являются float (ValueError: неверный литерал для float(): a).
В своем "How-to" они предлагают сначала поместить числовые данные по оси x, а затем отформатировать их. Есть ли способ сделать это напрямую (как указано выше)?
Используйте функцию 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()
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()
На боковой ноте даты являются численными в этом смысле (т.е. имеют собственный порядок и интервал).
Matplotlib обрабатывает временные данные довольно хорошо и очень отличается от приведенного выше примера. Здесь пример в разделе примеров matplotlib , но он фокусируется демонстрируя несколько разных вещей. В общем, вы просто используете либо plot_date
, либо просто создаете данные и вызываете ax.xaxis_date()
(или yaxis_date
), чтобы сообщить matplotlib, чтобы использовать различные локаторы и тикеры.
диаграммы лучше в этой ситуации:
x = ['a','b','c','d']
y = [1,2,3,4]
plt.bar(x,y)