Отображение значений строки в matplotlib - PullRequest
8 голосов
/ 23 марта 2010

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

Как использовать значения строки X?

Ответы [ 5 ]

10 голосов
/ 11 апреля 2013

Вы должны попробовать xticks

import pylab

names = ['anne','barbara','cathy']
counts = [3230,2002,5456]

pylab.figure(1)
x = range(3)
pylab.xticks(x, names)
pylab.plot(x,counts,"g")

pylab.show()
8 голосов
/ 29 октября 2017

Начиная с matplotlib 2.1, вы можете использовать строки в функциях построения графиков.

import matplotlib.pyplot as plt
x = ["Apple", "Banana", "Cherry"]
y = [5,2,3]

plt.plot(x, y)

plt.show()

enter image description here

Обратите внимание, что для сохранения порядка входных строк на графике вам нужно использовать matplotlib> = 2.2.

3 голосов
/ 23 марта 2010

Почему бы просто не сделать значение x каким-нибудь автоматически увеличивающимся числом, а затем изменить метку?

- Джед

1 голос
/ 23 марта 2010

Вот один способ, который, как я знаю, работает, хотя я думаю, что создание пользовательских символов - более естественный способ сделать это.место каждого из исходных символов данных - по сути, создание пользовательских «текстовых символов», хотя, опять же, я должен верить, что есть более прямой способ сделать это в matplotlib (без использования Artists).

0 голосов
/ 23 января 2012

Я не смог найти удобный способ сделать это, поэтому я прибег к этой маленькой вспомогательной функции.

import matplotlib.pyplot as p
def plot_classes(x, y, plotfun=p.scatter, **kwargs):
    from itertools import count
    import numpy as np
    classes = sorted(set(x))
    class_dict = dict(zip(classes, count()))
    class_map = lambda x: class_dict[x]
    plotfun(map(class_map, x), y, **kwargs)
    p.xticks(np.arange(len(classes)), classes)

Тогда вызов plot_classes(data["class"], data["y"], marker="+") должен работать как положено.

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