【问题标题】:Python plot data with timestamp (with hours) using plotninePython使用plotnine绘制带有时间戳(小时)的数据
【发布时间】:2020-11-05 23:36:38
【问题描述】:

我有以下数据框:

    point               timestamp_local         0
0   A                   2019-07-20 00:00:00     1
1   A                   2019-07-20 01:00:00     3
2   B                   2019-07-20 02:00:00     158
3   A                   2019-07-20 02:30:00     324
4   B                   2019-07-20 03:00:00     502

数据框告诉我在哪个point 上哪个时间timestamp_local 我有多少个连接。 0 是我的连接数。

我现在想使用plotnine 库绘制这些数据。我已经这样做了,并且当我使用没有时间的时间戳时它的工作,例如2019-07-20。但是当我使用带有时间的时间戳时,例如2019-07-20 00:00:00 它不工作。

这是我绘制不带时间的数据的python命令:

pn.ggplot(df, pn.aes(x="timestamp_local", y="0", group="point", color="point")) + pn.geom_line(stat="identity")

这会返回一个数字,我可以在其中看到按点分组的每天计数。

我现在有两个问题:

  1. 当使用像2019-07-20 01:00:00 这样的时间戳时,如何绘制相同的结果(数据会持续好几天。所以我不能直接删掉日期!)
  2. 如何绘制按月和年分组的相同结果? (例如2019-072019-082019-09 等等...)

我非常喜欢plotnine 库的解决方案,因为我以后想使用更多的功能,例如光滑等。如果 plotnine 库无法实现,我想要一个图形,其中每个点都有一条线,颜色不同,图形相同!如上图,红色为A点,蓝色为B点。

亲切的问候

【问题讨论】:

    标签: python pandas dataframe matplotlib plotnine


    【解决方案1】:

    提供的数据存储在 conn.csv 中,包括主题自定义。第一种情况显示完整的时间戳,使用来自 mizani (https://mizani.readthedocs.io/en/stable/formatters.html#mizani.formatters.date_format) 的 date_format 函数请求。

    from plotnine import *
    import pandas as pd
    from mizani.formatters import date_format
    
    df = pd.read_csv('conn.csv', parse_dates=[1])
    custom_axis = theme(axis_text_x = element_text(color="grey", size=6, angle=90, hjust=.3),
                        axis_text_y = element_text(color="grey", size=6), 
                        plot_title = element_text(size = 25, face = "bold"), 
                        axis_title = element_text(size = 10)  
                        ) 
    
    (
        ggplot(data = df, mapping = aes(x='timestamp_local', y='0', group="point", color="point")) + 
        geom_line(stat="identity") + custom_axis + ylab("Count") + xlab("TimeStamp") + labs(title="Count of the Connections") +
        scale_x_datetime(labels = date_format("%Y-%m-%d %H:%M:%S"))
    )
    

    to_period 函数用于提取和添加用于执行聚合的month_year 列。由于缺乏信息而使用了 geom_point。

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多