2017-05-30 55 views
1

我想用Matplotlib绘制一些测量数据。 用下面显示的代码,我得到了绘图窗口和GUI,但没有绘制任何绘图。如果我把这种情节改成圆形或十字形,它就可以正常工作。Matplotlib不绘制线条图;十字架,圆圈和三角形的工作

# coding=utf-8 
import matplotlib.pyplot as plt 
import csv 

with open("AgPVP8.2.171g1L#2.csv") as csvfile: 
    reader = csv.reader(csvfile, delimiter=",") 

    frequencies = [] 
    phases = [] 

    for row in reader: 
     frequency = float(row[0]) 
     phase = float(row[4]) 

     frequencies.append(frequency) 
     phases.append(phase) 

plt.plot([frequencies], [phases], "b-") 
plt.xscale("log") 
plt.show() 
+0

为什么你使用'''''如果你做'plt.plot(频率,相位,“b - ”)'它不起作用? – Dadep

回答

0

plt.plot(x,y)需要xy为列表(或一般序列)或数组。 在这里,您尝试绘制一个列表的列表,即[x]x不一样。 因此,在你的代码,你需要

plt.plot(frequencies, phases, "-b") 

更换plt.plot([frequencies], [phases], "b-")然后完整的代码应该是这样的:

import matplotlib.pyplot as plt 
import csv 

with open("AgPVP8.2.171g1L#2.csv") as csvfile: 
    reader = csv.reader(csvfile, delimiter=",") 

    frequencies = [] 
    phases = [] 

    for row in reader: 
     frequency = float(row[0]) 
     phase = float(row[4]) 

     frequencies.append(frequency) 
     phases.append(phase) 

plt.plot(frequencies, phases, "b-") 
plt.xscale("log") 
plt.show() 

我建议看看numpy.loadtxtnumpy.genfromtxt。这两种方式都会使得在csv文件中读取更容易,例如,在这种情况下

import matplotlib.pyplot as plt 
import numpy as np 

frequencies, phases = np.loadtxt("AgPVP8.2.171g1L#2.csv", unpack=True, usecols = (0,4), delimiter=",") 

plt.plot(frequencies, phases, "b-") 
plt.xscale("log") 
plt.show() 
+1

感谢您的帮助和提示! 非常感谢 – Xardas

1

的问题是,频率和相位仅在with open(...范围存在,则必须在该放置:

import matplotlib.pyplot as plt 
import csv 

with open("AgPVP8.2.171g1L#2.csv") as csvfile: 
    reader = csv.reader(csvfile, delimiter=",") 

    frequencies = [] 
    phases = [] 

    for row in reader: 
     frequency = float(row[0]) 
     phase = float(row[4]) 

     frequencies.append(frequency) 
     phases.append(phase) 
    plt.plot(frequencies, phases, "-b") 
    plt.xscale("log") 
    plt.show() 
+0

'csvfile'只存在于'with'上下文中。所有其他变量在这里是全球的。因此,在上下文之外进行绘图是完全没有问题的 - 我认为甚至应该这样做,以便在显示绘图之前可以关闭文件。 – ImportanceOfBeingErnest