#pandas #matplotlib
#pandas #matplotlib
Вопрос:
Я пытаюсь построить несколько данных из одного фрейма данных с индексом datetime. Моя база данных выглядит следующим образом:
Столбцы «Цена покупки» и «Цена продажи» имеют ту же цену, что и столбец «Цена». Цель состоит в том, чтобы установить маркеры на основной строке, которая основана на столбце «Цена». Вот фрагмент моего графика без добавления столбцов «Цена покупки» и «Цена продажи».
Вот мой код:
df=data()
xdate=df.index
yprice=df["Price"]
ybuy=df["Buy price"]
ysell=df["Sell price"]
fig,ax= plt.subplots()
ax.plot_date(xdate,yprice,"-")
ax.plot_date(xdate,ybuy,"gD")
ax.plot_date(xdate,ysell,"rD")
ax.xaxis.set_major_locator(dates.MinuteLocator(byminute=[0,10,20,30,40,50]))
ax.xaxis.set_major_formatter(dates.DateFormatter('%H:%M'))
fig.autofmt_xdate()
plt.tight_layout()
plt.grid()
plt.show()
К сожалению, столбцы «Цена покупки» и «Цена продажи» неупорядочиваются на оси Y, а данные «Цены» группируются вместе. Есть ли способ выпрямить ось y в порядке возрастания?
Большое вам спасибо!
Комментарии:
1. Вы строите строки. Вместо этого вы, вероятно, захотите отобразить данные y в виде чисел (с плавающей точкой), а данные x в виде дат (
datetime
илиnumpy.datetime64
илиpandas.Timestamp
).2. Спасибо за подсказку. Мне нужно было заменить значения «» на: df[«Цена покупки»].replace(«, np.nan, inplace= True) и df[«Цена продажи»].replace(«, np.nan, inplace=True)