使用PYSPARK显示时将散点图x轴从数值转换为日期值 [英] Convert scatter plot x-axis from numeric to date value when displaying using pyspark

查看:15
本文介绍了使用PYSPARK显示时将散点图x轴从数值转换为日期值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用以下代码的散点图

c1 = data_pd[data_pd.cluster == 0]
c2 = data_pd[data_pd.cluster == 1]
c3 = data_pd[data_pd.cluster == 2]
c4 = data_pd[data_pd.cluster == 3]
c5 = data_pd[data_pd.cluster == 4]
plt.scatter(c1.date, c1['totValue'],color='green')
plt.scatter(c2.date, c2['totValue'],color='blue')
plt.scatter(c3.date, c3['totValue'],color='red')
plt.scatter(c4.date, c4['totValue'],color='pink')
plt.scatter(c5.date, c5['totValue'],color='yellow')
plt.xlabel('date')
plt.ylabel('totValue')

日期列为数字格式。因此,一旦生成散点图,x轴值的格式为1e18。但我想将日期显示为2021-01-01等。我如何才能像那样显示x轴值?

推荐答案

您有时间戳格式的日期列,我猜是毫秒:1635759825292

您需要做的是将时间戳转换为datetime对象,然后使用matplotlib.datesDateFormatter定义matplotlib如何处理datetime的格式。

举个例子:

import random
from pyspark.sql import SparkSession
import matplotlib.pyplot as plt
import matplotlib.dates as md
from datetime import datetime


def plot_cluster(cluster, color, data_pd):
    data = data_pd[data_pd.cluster == cluster]
    dates = [datetime.fromtimestamp(x / 1000) for x in data.date]
    plt.scatter(dates, data["count"], color=color)


if __name__ == "__main__":
    spark = SparkSession.builder.getOrCreate()

    data = [
        {
            "date": 1635759507038 + random.randrange(5000),
            "count": random.randrange(20, 100),
            "cluster": random.randrange(5),
        }
        for _ in range(100)
    ]
    df = spark.createDataFrame(data)
    data_pd = df.toPandas()
    ax = plt.gca()
    plt.xticks(rotation=25)
    xfmt = md.DateFormatter("%Y-%m-%d %H:%M:%S")
    ax.xaxis.set_major_formatter(xfmt)

    clusters = [0, 1, 2, 3, 4]
    colors = ["green", "blue", "red", "pink", "yellow"]
    for cluster, color in zip(clusters, colors):
        plot_cluster(cluster, color, data_pd)

    plt.xlabel("date")
    plt.ylabel("count")
    plt.tight_layout()
    plt.show()

注意:X/1000

图:

这篇关于使用PYSPARK显示时将散点图x轴从数值转换为日期值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆