可变日期滴答声 matplotlib 动画

Variable date ticks matplotlib animation

我目前每 2 秒从 CSV 文件中读取数据点并使用 matplotlib Funcanimation 绘制它。但是,x 轴上的日期刻度相互堆叠,因此不可读。我正在寻找一种有效的方式来排列 x-ticks,这样它们就不会堆叠在一起。

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import pandas as pd

def animate(i):
    data = pd.read_csv('data.csv')
    x = data.iloc[:,0]
    y4 = data.iloc[:,4]
    plt.cla()
    plt.plot(x, y4, label = "value")
    
    plt.legend(loc= 'upper left')
    plt.tight_layout()

ani = FuncAnimation(plt.gcf(), animate, interval = 2000)

plt.show()

假设您的数据是日期格式,例如np.datetime64,你试过the documentation的ConciseDateFormatter吗?

对于您的示例,这类似于

import matplotlib.dates as mdates
def animate(i):
    data = pd.read_csv('data.csv')
    x = data.iloc[:,0]
    y4 = data.iloc[:,4]
    plt.cla()

    ax = plt.gca()
    locator = mdates.AutoDateLocator(minticks=3, maxticks=7)
    formatter = mdates.ConciseDateFormatter(locator)
    ax.xaxis.set_major_locator(locator)
    ax.xaxis.set_major_formatter(formatter)

    plt.plot(x, y4, label = "value")
    
    plt.legend(loc= 'upper left')
    plt.tight_layout()