gpt4 book ai didi

Python - 在 matplotlib 中绘制带有日期时间的线图和带有 NaN 值的列

转载 作者:行者123 更新时间:2023-12-01 09:22:49 26 4
gpt4 key购买 nike

我需要用基本折线图绘制一些数据。

       datatime             col1
29/08/2017 10:13:23.972 NaN
29/08/2017 10:13:23.972 NaN
29/08/2017 10:13:54.449 425
29/08/2017 10:14:19.800 425
29/08/2017 10:14:45.232 425
29/08/2017 10:14:48.567 NaN
29/08/2017 10:15:19.331 2
29/08/2017 10:15:38.081 380
29/08/2017 10:16:27.517 380

现在我遇到了一些问题。我需要的是绘制这个,如果有 NaN 在图表上创建一个空白,而不是从上一个值到下一个值的一条线。我曾经使用 matplotlib 进行绘图,但不知道如何集成该“跳过”步骤。如果能够在线绘制每次跳高或跳低的值,那就太好了。

我有什么:

def plot_1(data, par_time, par_y, par_ylabel, par_legend):
fig = plt.figure(figsize=(5, 3))
ax1 = fig.add_subplot(111)
plt.gca().set_color_cycle(['red', 'blue', 'green', 'brown'])
ax1.plot(data[par_time], data[par_y], label=par_ylabel, marker='o', linewidth=2.0)
plt.ylabel(par_ylabel)
handles, labels = ax1.get_legend_handles_labels()
ax1.legend(handles, par_legend, loc='upper center', bbox_to_anchor=(1.15, 1))
ax1.grid('on')
for i, j in zip(data[par_time], data[par_yticks]):
ax1.annotate(str(j), xy=(i, j))
a = plt.savefig('/home/user/graph.png)
return a

这里没有那么多行,但是如果有的话,x会很拥挤,是否可以在3秒内创建每个网格?

提前感谢您的帮助。

最佳答案

IIUC,此代码可能适合您。我将 x 轴间隔设置为 30 秒(而不是您要求的 3 秒),因为 3 秒间隔会导致 x 轴非常拥挤。无论如何,它应该让您了解如何继续前进。

此代码中创建具有 NaN 值的间隙的基本思想是在数据中创建一个新列,以便对每个连续(非 NaN code>) block 在一起,然后绘制这些组中的每一组。

import matplotlib.pyplot as plt
import matplotlib.dates as md

# Make sure `datatime` is in datetime format
df['datatime'] = pd.to_datetime(df.datatime)

# create new group if interrupted by NaN
df['group'] = df.col1.isnull().cumsum()


fig, ax = plt.subplots()
# Groupby your new group column, and plot each group
for _, group in df.groupby('group'):
plt.plot(group.dropna(subset=['col1']).datatime,
group.dropna(subset=['col1']).col1,
color='blue')

# Create your 30 second interval on the x axis, and format your dates
xlocator = md.SecondLocator(interval=30)
dateFmt = md.DateFormatter('%H:%M:%S')

ax.xaxis.set_major_locator(xlocator)
ax.xaxis.set_major_formatter(dateFmt)
plt.xticks(rotation=90)

enter image description here

关于Python - 在 matplotlib 中绘制带有日期时间的线图和带有 NaN 值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com