我一直试图在python中进行绘图,但是我在语法方面面临挑战。我已经用Google搜索,但是找不到合适的东西。
我有三个数据帧。第一个数据框中的数据类似于附件中的图片。
我还有两个数据帧,每个数据帧都包含一列。一个最大。过去几年的温度如下图所示,而另一个则有最小值。尽管第二个DF没有DF1的城市名称列,但DF2中的最高温度是DF1本身提到的城市名称。
数据框3。
我想制作一个线图,其中x轴应该具有City名称,Y轴必须这样才能容纳DF1中的Temp,DF2中的Max Temp和DF3中的Min Temp。我想将所有三线图合并到同一张图中。
答案 0 :(得分:0)
您可以执行以下操作:
import pandas as pd
import matplotlib.pyplot as plt
# create data:
df1 = pd.DataFrame({"City Name": ["Toronto", "NYC"],
"Temp": [10, 20],
"Rainfall": [100, 232]})
df2 = pd.DataFrame({"Max Temp": [20, 25]})
df3 = pd.DataFrame({"Min Temp": [0, -10]})
# concatenate all data into one dataframe:
df = pd.concat([df1, df2, df3], axis=1)
# drop rainfall column from data:
df.drop("Rainfall", 1)
# change index to city names:
df.index = df["City Name"]
# drop city name column from data:
df.drop("City Name", 1)
plt.plot(df)
plt.legend(df.columns)
这将为您提供:
答案 1 :(得分:0)
pandas.DataFrame
具有内置方法plot。如果只有一个数据框,则可以执行以下操作:
df.plot('City Name', 'Max Temp')
如果具有相同长度的不同数据帧,则可以将它们附加pd.concat
(还有其他几个选项)。我也不知道原因,但是df.plot
没有显示x轴:您可以通过添加plt.ticks
来纠正它。代码示例:
df1 = pd.DataFrame({'cityname': ['A', 'B', 'C']}, dtype='U4')
df2 = pd.DataFrame({'Tmax': [10, 20, 30]})
df3 = pd.DataFrame({'Tmin': [10, 20, 30]})
#linestyle dashed, color green (default is fill blue)
pd.concat([df1, df2, df3], axis=1).plot('cityname', 'Tmax', linestyle='--', color='g')
plt.xticks(*zip(*enumerate(df1['cityname'])))