使用pandas在同一图形上绘制多列

but5z9lq  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(390)

我正在尝试使用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")

这是输出数据的一些示例数据:

这是原始数据:

单独绘制每个图形可以得到这些图形-我只希望它们重叠!

zzwlnbp8

zzwlnbp81#

你的 data.plot.line 返回一个 AxesSubplot 例如,您可以捕获它并将其馈送到第二个命令:


# plot 1

ax = data.plot.line(…)

# plot 2

data.plot.line(…, ax=ax)

相关问题