我的目标是使用排序后的结果数据在同一窗口上绘制每年的“月份与平均温度”图。
我已经对分别具有年份和月份的前两列进行了排序,然后将新排序的数据保存到名为
NewFile
的文件中,但我似乎无法在这里找到解决方案,我使用了 csv
读者,现在我正在使用 numpy,
代码:
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
csv1 = open('Data_5.1.csv')
data = np.array(list(csv.reader(csv1,delimiter=',').astype("string")
year = data[:,0]
month = data[:,1]
temp= data[:,3]
fig, ax = plt.subplots(figsize=(10,10))
ax.plot(year, month, label='month/year')
ax.plot(year, temp, label='year/temp')
plt.legend()
但它只是抛出一个错误:
File "<ipython-input-282-282e91df631f>", line 9
year = data[:,0]
^
SyntaxError: invalid syntax
我将放置两个文件链接,分别是 Data_5.1 和 NewFile
1 - 您没有在第 6 行中关闭括号,因此您在第 8 行中收到错误。
2 - 第 6 行不需要 astype("string")。
我修复了你的代码,但你必须完成子图。祝你好运!
import numpy as np
import matplotlib.pyplot as plt
import csv
plt.style.use('ggplot')
csv1 = open('Data_5.1.csv')
data = np.array(list(csv.reader(csv1,delimiter=',')))
year = data[:,0]
mounth = data[:,1]
temp= data[:,3]
fig, ax = plt.subplots(2,2) #This will create 4X4 subplots in one window
ax[0,0].plot(year, mounth, label='mounth/year') #This will plot in the 0,0 subplot
ax[0,1].plot(year, temp, label='year/temp') #This will plot in the 0,1 subplot
'''
For you to continue.
'''
plt.legend()
plt.show()
您的数据位于 CSV 文件中,并且其类型不同。 Pandas 确实是更合适的工具。
由于编码错误,我不得不稍微调整你的 CSV,最终的结果如下:
year,Month,Other Month,temperature_C
2003,Jan.,Some val,17.7
2004,Jan.,Some val,19.5
2005,Jan.,Some val,17.3
2006,Jan.,Some val,17.8
...
以下是您共享的代码在重构后的大概样子:
import matplotlib.pyplot as plt
import pandas as pd
plt.style.use('ggplot')
# csv1 = open('Data_5.1.csv')
# data = np.array(list(csv.reader(csv1,delimiter=',').astype("string")
df_1 = pd.read_csv('../resources/Data_5.1.csv', header=0, names=['year', 'month', 'some_col', 'temp'],
dtype={'some_col': str, 'temp': float, 'month': str, 'year': str})
year = df_1['year']
month = df_1['month']
temp = df_1['temp']
fig, ax = plt.subplots(figsize=(10, 10))
ax.plot(year, month, label='month/year')
ax.plot(year, temp, label='year/temp')
plt.show()
如果您有任何疑问,请告诉我:)