繁体   English   中英

使用时间格式化xaxis值并仅在Python中使用matplotlib在散点图值下显示它们

[英]format xaxis values with time and show them only under the scatter plot value using matplotlib in 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轴值(382873,382866,382873 .......)使用“ mktime”功能通过以下代码行转换日期。

bin = int(mktime(dt)/ 3600)

(我试图查看错误在一小时内发生了多少次)在图表上,x轴值显示为382873,382866,382873..etc。 我希望他们将它们转换回代表的日期(使用MM / DD / YY MM:HH:SS FORMAT)。 我也希望日期显示在散点图(点)的正下方,并且颜色与点相同。

任何帮助将不胜感激。

您应该将日期转换为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采用相同的格式字符串。

查看将日期放在圆点下方的注释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM