python的新手,因此任何指导将不胜感激! 我有一个包含名称的CSV文件。我试图计算每个人的名字“亚当”并将其绘制在条形图中。 CSV更新时,我也希望条形图也更新。下面是我的代码。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
import csv
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
myCount = 0
otherCount = 0
def animate(i):
with open('test2.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if row['fName'] == 'Adam':
myCount +=1
else:
otherCount = +=1
x = ["Adam","Not Adam"]
y = [myCount, otherCount]
ax1.clear()
ax1.bar(x,y)
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
现在,它向我显示了图形的轮廓,但未显示任何内容。 另外,我从另一个来源获得了动画功能。有更有效的方法吗?
好,所以我更新了代码:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
import csv
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def animate(i):
myCount = 0
otherCount = 0
with open('testcsv.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if row['fName'] == 'Adam':
myCount +=1
else:
otherCount +=1
x = ["Adam","Not Adam"]
y = [myCount, otherCount]
ax1.clear()
ax1.bar(x,y)
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
通过测试,我知道它正确地捕获了CSV并读取了数据,但仍未绘制它。数据如下:
fname,lname
Adam,Smith
Adam,Sandler
Adam,Smith
Adam,Sandler
Bruce,Willis
Adam,Smith
James,Harden
Bruce,Wayne
答案 0 :(得分:0)
该代码似乎存在三个主要问题。前两个与使用中的计数器有关。最后是数据的命名。
otherCount = +=1
是无效的python。 myCount = 0; otherCount = 0
。fname
,但索引使用row['fName']
。