繁体   English   中英

格式化x轴值并仅在散点图值下显示它们-Python中的matplotlib

[英]format x-axis values and show them only under the scatter plot value - matplotlib in Python

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()

使用mktime()函数通过以下代码( 382873,382866,382873.......) x轴值( 382873,382866,382873.......)转换为日期。

bin = int(mktime(dt) / 3600)

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

另外,我不确定要在代码中进行哪些更改以解决问题。 随时编辑我的代码。 谢谢。

只需添加:

plt.xticks(plt.xticks()[0], [time.strftime("%m/%d/%y, %H:%M:%S", time.localtime(item)) for item in plt.xticks()[0]*3600])

在此处输入图片说明

要使日期位于圆点下方,请多加两行:

for x, y in dict(itertools.chain(*[item.items() for item in d.values()])).items():
    plt.text(x, y, time.strftime("%m/%d/%y, %H:%M:%S", time.localtime(x)), ha='center', va='top')

但看起来会很忙:

在此处输入图片说明

暂无
暂无

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

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