Невозможно визуализировать с помощью линейного графика - PullRequest
1 голос
/ 12 февраля 2020

Я тестировал matlpotlib с использованием файла CSV, значения y и z которого не связаны, как показано ниже.

Я могу визуализировать эти данные, используя точечный график, но я не могу соединить эти точки, но конечная цель - создание связного графика с использованием линейного графика. Почему он не может визуализироваться с линейным сюжетом?

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'C:\Users\PythonTest\source\file.csv')
ax1 = plt.subplot2grid((1, 1), (0, 0))
x = df.time
y = df.gx
z = df.sp
# ax1.scatter(x, y, color='k', s=0.1)
# ax1.scatter(x, z, color='c', s=0.1)
ax1.plot(x, y, color='k')
ax1.plot(x, z, color='c')
plt.show()

1 Ответ

2 голосов
/ 12 февраля 2020

Вы можете разбросать прерывистые значения графика, но не можете построить линию прерывистых значений, потому что matplotlib не может волшебным образом определить, какие значения вы хотите получить между указанными значениями. Вы хотите обработать пропущенные значения как 0? Как предыдущая стоимость? Что-то еще?

Один из способов сделать sh то, что, я думаю, вы, вероятно, захотите, - отбросить пропущенные значения. Давайте сделаем время и gx:

time_gx = df.drop(columns=['sp']).dropna()
plt.plot(time_gx['time'], time_gx['gx'])
plt.xlabel('time')
plt.ylabel('gx')
plt.show()

enter image description here

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

df2 = df.ffill()
plt.plot(df2['time'], df2['gx'])
plt.xlabel('time')
plt.ylabel('gx')
plt.show()

enter image description here

...