在Python中使用matplotlib设置xaxis值随时间的格式,并仅在散点图值下显示它们

2024-03-29 09:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在绘制散点图,需要格式化xaxis值的帮助。下面是我的代码。你知道吗

import matplotlib.pyplot as plt
import matplotlib
import numpy as np 
import time
d ={'5000cca234c1c445': {382877: 7, 382919: 3},
'5000cca234c94a2e': {382873: 1, 382886: 1},
'5000cca234c89421': {383173: 1, 383183: 2, 382917: 1, 382911: 1},
'5000cca234c5d43a': {382889: 1, 382915: 1, 382917: 8},
'5000cca234c56488': {382909: 2, 382911: 5}}

colors = list("rgbcmyk")

for data_dict in d.values():
    x = data_dict.keys()
    y = data_dict.values()
    plt.scatter(x,y,color=colors.pop(),s = 60)
    plt.ylabel("Errors" , fontsize=18, color="Green")
    plt.xlabel("Occured at",fontsize=18, color="Green")
    plt.title("DDN44a" , fontsize=25, color="Blue")
    plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
    plt.xticks(rotation='vertical') 
#plt.ylim(min(y),max(y))
plt.grid()

plt.legend(d.keys())
plt.show()

x轴值(3828733866382873……)是使用“mktime”函数通过以下代码行转换的日期。你知道吗

bin=int(mktime(dt)/3600)

(我想知道一小时内发生了多少次错误) 在图表上,x轴值显示为3828733866382873..等。我希望它们将它们转换回它们所表示的日期(使用MM/DD/YY MM:HH:SS格式)。我也希望日期显示在散点图(点)的正下方,颜色与点相同。你知道吗

任何帮助都将不胜感激。你知道吗


Tags: 代码importdatagetmatplotlibaspltgreen
1条回答
网友
1楼 · 发布于 2024-03-29 09:19:25

您应该将日期转换成datetime.datetime对象,并将它们用于xaxis,而不是用于时间的数字。使用DateFormatter获取所需的格式。你知道吗

这将为您提供2012年4月3日17:30 15秒的格式:

import datetime
d = datetime.datetime(2012, 4, 3, 17, 30, 15)
print(d.strftime('%m/%d/%y %M:%H:%S'))

04/03/12 30:17:15

DateFormatter采用相同的格式字符串。你知道吗

看一看annotations把日期放在点下面。你知道吗

相关问题 更多 >