2016-01-13 47 views
1

这里的情节我目前:Matplotlib - 绘制的时候它把十进制零秒后

enter image description here

的“时间”的字符串我进口是这样的:八点12分46秒,所以我想最后删除零,但我似乎无法找到问题。另外,有没有办法以指数格式显示Y轴上的浮点数,这是我从csv导入的格式?

我刚开始研究matplotlib和numpy的工作,所以如果你有一些建议,它将是太棒了。

预先感谢您!

import numpy as np 
import datetime as dt 
import matplotlib 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
from matplotlib import style 

print(plt.style.available) 

style.use('ggplot') 

fig = plt.figure() 
ax1 = fig.add_subplot(1,1,1) 

def animate(i): 
    graph_data = open('C:\\Users\\arzuffi pc test\\Desktop\\VMI WIP - Copia (2)\\Cycle info\\_Current Cycle.csv','r').read() 
    #graph_data = open('C:\\Users\\arzuffi pc test\\Desktop\\Visual Machine Interface Alpha 1.4.3\\Cycle info\\_Current Cycle.csv','r').read() 
    lines = graph_data.split('\n') 
    xs = [] 
    ys = [] 
    skip = 0 
    for line in lines:   
     if skip < 7: 
      skip += 1 
     else:     
      if len(line) > 1: 
       time, cycle, pc, pd, co, hv, cr, ph, gd_volt, gd_amp, gd_power, eva_amp, eva_volt, p_rpm, p_amp, r1_rpm, r1_amp, r2_rpm, r2_amp, hmdso, gas, ahc, diff_l, diff_r = line.split(';') 
       #x, y = line.split(';') 
       print(time) 
       print(pc) 
       xs.append(dt.datetime.strptime(time,'%H:%M:%S'))#.date()) 
       ys.append(pc) 

     #print(i) 
    #xs = matplotlib.dates.date2num(xs)  
    print(xs)  
    if len (xs) > 100: 
     xs = xs[-100:] 
    if len (ys) > 100: 
     ys = ys[-100:] 
    ax1.clear() 
    ax1.plot(xs, ys) 
    plt.gcf().autofmt_xdate() 

ani = animation.FuncAnimation(fig, animate,interval = 1000) 
plt.show() 

这些数据: ​​

+1

请尝试添加代码和im在问题本身的年龄。 –

+0

它不允许我放置图像,自动将它们转换为链接。虽然增加了代码作为文本。 –

+0

你可以从文件中添加一些示例数据吗?这会使重建问题变得更容易。 –

回答

2

您可以指定要使用的格式如下:

xs = matplotlib.dates.date2num(xs) # You need to keep this line 

hfmt = matplotlib.dates.DateFormatter('%H:%M:%S') 
ax1.xaxis.set_major_formatter(hfmt) 
ax1.plot(xs, ys) # You have this already 

如下这会给你的输出:

matplot with time formatting

+0

工作!非常感谢你 :) –