matplotlib 如何在x轴上绘制日期?分割图为正和负?

svujldwt  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(178)

我试图创建一个线图,负时是红色,正时是绿色,正时是绿色,正如在这个post中所建议的。这是通过将数据框拆分为正数据框和负数据框并分别绘制它们来完成的。这是使用以下代码完成的:

plt.figure(figsize=(12,8))

    new_df.Performance.where(new_df.Performance.ge(0), np.nan).plot(color='green')
    new_df.Performance.where(new_df.Performance.lt(0), np.nan).plot(color='red')

    plt.show()

这很好用,但我无法在x轴上绘制日期。它只会绘制数字。我该怎么解决这个问题?
下面是数据框架的简化版本:

Date            Performance
8/2/2022 0:00   -1.01
8/2/2022 20:00  -0.0001
8/2/2022 20:00  0.0001
8/3/2022 0:00   0.19
8/4/2022 0:00   2
8/6/2022 0:00   0.0001
8/7/2022 0:00   -0.0001
8/8/2022 0:00   -5

在这里,'Date列是一个datetime对象。
我试着在代码中添加x = 'date'和多个变体,但它不起作用。

vptzau2j

vptzau2j1#

也许这会工作吗?
import pandas as pd import matplotlib.pyplot as plt

# Assuming 'Date' is the column containing the dates
new_df['Date'] = pd.to_datetime(new_df['Date'])  # Convert 'Date' column to datetime if it's not already

# Set 'Date' column as the index
new_df.set_index('Date', inplace=True)

new_df.Performance.where(new_df.Performance >= 0, np.nan).plot(color='green')

new_df.Performance.where(new_df.Performance < 0, np.nan).plot(color='red')

plt.xlabel('Date') 
plt.ylabel('Performance')  
plt.title('Performance Plot') 
plt.legend(['Positive', 'Negative'])  

plt.show()

相关问题