我正在尝试使用pandas和matplotlib在同一个图形上绘制多条不同的线。
我有一系列的100个合成温度历史,我想用灰色来绘制,与我用来生成数据的原始真实温度历史相对照。
如何在同一个图形上绘制所有这些系列?我知道如何在matlab中实现这一点,但我在这个项目中使用python,Pandas是我发现的最简单的读取输出文件中每一列的方法,而无需单独指定每一列。数据列的数量将从100变为1000,因此我需要一个通用的解决方案。我的代码很好地分别绘制了每个数据系列,但我只需要找出如何将它们添加到同一个图中。
以下是迄今为止的代码:
# dirPath is the path to my working directory
outputFile = "output.csv"
original_data = "temperature_data.csv"
# Read in the synthetic temperatures from the output file, time is the index in the first column
data = pd.read_csv(outputFile,header=None, skiprows=1, index_col=0)
# Read in the original temperature data, time is the index in the first column
orig_data = pd.read_csv(dirPath+original_data,header=None, skiprows=1, index_col=0)
# Convert data to float format
data = data.astype(float)
orig_data = orig_data.astype(float)
# Plot all columns of synthetic data in grey
data = data.plot.line(title="ARMA Synthetic Temperature Histories",
xlabel="Time (yrs)",
ylabel=("Synthetic avergage hourly temperature (C)"),
color="#929591",
legend=None)
# Plot one column of original data in black
orig_data = orig_data.plot.line(color="k",legend="Original temperature data")
# Create and save figure
fig = data.get_figure()
fig = orig_data.get_figure()
fig.savefig("temp_arma.png")
这是输出数据的一些示例数据:
这是原始数据:
单独绘制每个图形可以得到这些图形-我只希望它们重叠!
1条答案
按热度按时间zzwlnbp81#
你的
data.plot.line
返回一个AxesSubplot
例如,您可以捕获它并将其馈送到第二个命令: