Невозможно визуализировать с помощью линейного графика

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

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

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'C:UsersPythonTestsourcefile.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()
time,gx,sp
1202.51961,,
1202.52279,,
1202.52564,516,
1202.52663,,0
1202.52688,,
1202.52861,,
1202.53262,,
1202.53663,516,
1202.53961,,
1202.53985,,
1202.54262,,
1202.54583,524,
1202.54663,,10
1202.54687,,
1202.54885,,
1202.55262,,
1202.55564,531,
1202.55886,,
1202.55967,,
1202.56285,,
1202.56309,,
1202.56585,516,
1202.56664,,20
1202.56689,,
1202.56861,,
1202.57285,,
1202.57583,516,
1202.57961,,
1202.58285,,
1202.58564,516,
1202.58663,,0
1202.58687,,
1202.58761,,
1202.58861,,
1202.59262,,
1202.59583,490,
1202.59961,,
1202.60262,,
1202.60562,490,
1202.60683,,25
1202.60707,,
1202.60885,,
1202.60979,,
1202.61261,,
1202.61608,516,
1202.61961,,
1202.62285,,
1202.62483,516,
1202.62565,,1

Всего 1 ответ


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

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

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

введите описание изображения здесь

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

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

введите описание изображения здесь