Получение данных в Matplot / pylab для точечной диаграммы - PullRequest
2 голосов
/ 27 апреля 2020

Я пытаюсь создать точечный график некоторых данных. Данные поступают в виде координат x и y в списке списков.

stepsPlot = [[1, 0], [2, 0], [2, -1], [3, -1], [3, -2], [4, -2], [4, -1], [4, 0], [4, -1], [5, -1]]

Выполнение следующего кода

import pylab as plt

plt.figure('Random Walk Scatter Plot')
plt.clf()
plt.title('Random Walk Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.plot(stepsPlot)
plt.show()

создает график сортировки (для тестирования) - поэтому я знаю, что он получает данные, но он не понимает, что данные представляют отдельные точки. Когда я изменяю plt.plot (stepsPlots) на plt.scatter (stepsPlot) - при чтении документов я предполагаю, что это то, что мне нужно - я получаю ошибку

TypeError: scatter () отсутствует 1 требуемый позиционный аргумент: 'y'

Я предполагаю, что это означает, что pylab не понимает, что данные представляют координаты x и y?

Кто-нибудь может подсказать, где я ошибаюсь? TIA

Ответы [ 3 ]

0 голосов
/ 27 апреля 2020

@ SysOverdrive отметим, что вам нужно указать два вектора. Один из способов сделать это - преобразовать список списка в фрейм данных и затем предоставить столбцы в виде двух векторов.

In [73]: df = pd.DataFrame(stepsPlot)

In [74]: df
Out[74]:
   0  1
0  1  0
1  2  0
2  2 -1
3  3 -1
4  3 -2
5  4 -2
6  4 -1
7  4  0
8  4 -1
9  5 -1

In [75]: df.columns = ['X','Y']

In [82]: import pylab as plt
    ...:
    ...: plt.figure('Random Walk Scatter Plot')
    ...: plt.clf()
    ...: plt.title('Random Walk Scatter Plot')
    ...: plt.xlabel('X Axis')
    ...: plt.ylabel('Y Axis')
    ...: plt.scatter(x=df['X'],y=df['Y'])
    ...: plt.show()

enter image description here

0 голосов
/ 27 апреля 2020

Вам нужно изменить две вещи:

  • Сначала укажите оси x и y следующим образом:
  • Во-вторых, вам нужно использовать scatter вместо plot.

Итак, код должен быть:

import pylab as plt


stepsPlot = [[1, 0], [2, 0], [2, -1], [3, -1], [3, -2], [4, -2], [4, -1], [4, 0], [4, -1], [5, -1]]


plt.figure('Random Walk Scatter Plot')
plt.clf()
plt.title('Random Walk Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
X = [item[0] for item in stepsPlot]
Y = [item[1] for item in stepsPlot]
plt.scatter(X, Y)
plt.show()

, который создает этот график: enter image description here

0 голосов
/ 27 апреля 2020

Я предполагаю, что это означает, что pylab не понимает, что данные представляют координаты x и y?

Ваше предположение верно. Вы должны дать функции графика 2 вектора

1, содержащие все значения X, 2-й, содержащий все значения Y

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