如何使用python在一个图形中绘制具有不同日期时间的三个值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python在一个图形中绘制具有不同日期时间的三个值?相关的知识,希望对你有一定的参考价值。
这里我有一个具有不同值和date_time的csv文件。我编写了代码并运行它。然后它给了我一个错误时间数据'8/6/2018 6:45'与格式'%d /%m /%Y%H不匹配:%M:%S'我想在一个中绘制这三个不同的值图形。任何人都可以帮我解决这个问题吗?这是我的代码:
condition = ""
date_time = []
x1 = []
x2 = []
x3 = []
def convertTime(s):
tm = time.strptime(s, " %d/%m/%Y %H:%M:%S")
return datetime.datetime(date.tm_year,date.tm_mon, date.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec)
with open('data43.csv','r') as csv_file:
csv_data = csv.reader(csv_file, delimiter=',')
row_num = 0
for row in csv_data:
if(row_num == 0):
condition = row[0]
elif(row_num > 2): #Data starts here
if(row[0] != ''):
date_time.append(convertTime(row[0]))
if(row[1] != ''):
x1.append(int(row[1]))
if(row[2] != ''):
x2.append(int(row[2]))
if(row[3] != ''):
x3.append(int(row[3]))
row_num = row_num + 1
fig1 = plt.figure(1)
ax = fig1.add_subplot(2,1,1)
ax.plot(date_time,x1)
ax.stem(date_time,x2,'C1--','C1o',linefmt=None, markerfmt=None, basefmt=None)
ax.stem(date_time,x3,'C2--','C2o',linefmt=None, markerfmt=None, basefmt=None)
ax.legend()
ax.xaxis_date()
ax.get_xaxis().set_major_formatter(DateFormatter('%d/%m/%Y %H:%M:%S'))
plt.xlabel('t')
plt.ylabel('k')
leg = plt.legend( loc = 'upper right')
plt.draw() # Draw the figure so you can find the positon of the legend.
bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes)
xOffset = 0.3
bb.x0 += xOffset
bb.x1 += xOffset
leg.set_bbox_to_anchor(bb, transform = ax.transAxes)
plt.rcParams["figure.figsize"] = [20,20]
ax.plot(style='.-')
plt.show()
错误:
我把datetime作为:
所以我把秒包括为:00之后我读了这个csv文件。
如果我将时间改为12小时阅读那么会发生什么?像这样
答案
我想你的数据可能有错误,而不是python文件。
8/6/2018 6:45
与%d/%m/%Y %H:%M:%S
格式不匹配,因为没有秒。
我会测试:00
添加到您的时间数据并再次测试。
以上是关于如何使用python在一个图形中绘制具有不同日期时间的三个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python matplotlib 绘制具有 4 个象限的图形或绘图?
在相同的绘图空间上绘制两个 Seaborn sns.kdeplot 图形,但每个图形都有一个具有相同范围的不同颜色条
Pyqtgraph:在同一个图形窗口中实时绘制两个图形相同的X轴但两个不同的Y轴方向相反