Pyplot / Matplotlib: двоичные данные со строками на оси X - PullRequest
0 голосов
/ 14 мая 2019

Я знаю, что это такая базовая вещь, но из-за нелепых временных ограничений и серьезности ситуации я вынужден спросить что-то вроде этого:

У меня есть два массива по 160 000 записей.Одна содержит строки (имена, которые мне нужно использовать), другая содержит соответствующие 1 и 0.

Я пытаюсь сделать простой «пошаговый» график в pyplot с массивом имен вдоль оси X и0 и 1 вдоль оси Y.

У меня есть это в настоящее время:

import numpy as np
import matplotlib.pyplot as plt

data = [1, 2, 4, 5, 9]
bindata = [0,1,1,0,1,1,0,0,0,1]
xaxis = np.arange(0, data[-1] + 1)
yaxis = np.array(bindata)
plt.step(xaxis, yaxis)

plt.xlabel('Filter Degree Combinations')
plt.ylabel('Negative Or Positive')
plt.title("Car 1")

#plt.savefig('foo.png') #For saving
plt.show()

Это дает мне это: enter image description here

НоЯ хочу что-то вроде этого: enter image description here

Я собрал код из нескольких примеров, учебных пособий и вопросов stackoverflow, но я столкнулся с "ValueError: x и y должны иметьто же самое первое измерение"так часто, что я никуда не попадаю, когда пытаюсь экспериментировать, двигаясь вперед.

1 Ответ

2 голосов
/ 14 мая 2019

Вы можете достичь желаемого графика, указав метки галочек и их положение на оси x с помощью plt.xticks. Первый аргумент range(0, 10, 2) - это позиции, за которыми следуют строки

import numpy as np
import matplotlib.pyplot as plt

data = [1, 2, 4, 5, 9]
bindata = [0,1,1,0,1,1,0,0,0,1]
xaxis = np.arange(0, data[-1] + 1)
yaxis = np.array(bindata)
plt.step(xaxis, yaxis)
xlabels = ['Josh', 'Anna', 'Kevin', 'Sophie', 'Steve'] # <-- specify tick-labels
plt.xlabel('Filter Degree Combinations')
plt.ylabel('Negative Or Positive')
plt.title("Car 1")
plt.xticks(range(0, 10, 2), xlabels) # <-- assign tick-labels
plt.show()

enter image description here

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