2017-01-23 77 views
0

繪製多條曲線我有一組csv文件看起來像這樣:讀取數據使用matplotlib

tau,rh,temp, 
00,100,23, 
03,85,25, 
06,98,26, 
09,100,15, 

現在我知道如何從一個CSV文件繪製圖表。我有以下腳本:

import matplotlib.pyplot as plt 
import numpy as np 
import csv 
import sys 

file=sys.argv[1] 
fname = open(file,'rt') 
plt.plotfile(fname, ('tau', 'rh', 'tmp'), subplots=False) 
plt.show() 

這似乎工作正常。但是,我希望能夠將tmp圖放在一個單獨的y軸上,而不是rh。我知道,當繪製在多軸多條曲線,你必須做到以下幾點:

t = np.arange(1, 25.0, 5) 
s1 = [1,2,3,4,5] 
ax1.plot(t, s1, 'b-') 
ax1.set_xlabel('time (s)') 
# Make the y-axis label, ticks and tick labels match the line color. 
ax1.set_ylabel('rh', color='b') 
ax1.tick_params('y', colors='b') 

ax2 = ax1.twinx() 
s2 = [1,2,4,9] 
ax2.plot(t, s2, 'r.') 
ax2.set_ylabel('tmp', color='r') 
ax2.tick_params('y', colors='r') 

,你會得到兩個地塊。基於讀取csv文件,我想要做的是將s1設置爲rh的csv值,將s2設置爲tmp的csv值。我如何去做這件事?

回答

0

你可以首先將數據加載到數組:

data = np.loadtxt(sys.argv[1], delimiter=',', skiprows=1, usecols=(0,1,2)) 
t = data[:,0] 
s1 = data[:,1] 
s2 = data[:,2] 

,然後進行繪製。這假設你知道你的數據的列索引,而不僅僅是列名。這將是更好的,雖然使用的熊貓:

import pandas 
d = pandas.read_csv(sys.argv[1]) 

然後情節(d [ '的tau'],d [ 'RH'])和圖(d [ '的tau'],d [ '溫度'] )在代碼的第二部分設置的軸上代替s1和s2。

0

你的代碼有幾個問題。

我會用熊貓閱讀csv只是爲了好的做法。但它也以這種方式工作。

的繪製部分缺少 「無花果,AX1 = plt.subplots()」 命令,並且所述第二部分具有用於x和y不同lenght陣列(t爲5個術語和s2爲4個方面)

試試這個:

fig, ax1 = plt.subplots() 
t = np.arange(1, 25.0, 5) 
s1 = [1,2,3,4,5] 
ax1.plot(t, s1, 'b-') 
ax1.set_xlabel('time (s)') 
# Make the y-axis label, ticks and tick labels match the line color. 
ax1.set_ylabel('rh', color='b') 
ax1.tick_params('y', colors='b') 

ax2 = ax1.twinx() 
s2 = [1,2,4,9,10] 
ax2.plot(t, s2, 'r.') 
ax2.set_ylabel('tmp', color='r') 
ax2.tick_params('y', colors='r') 

希望它有幫助!