使用Python无法获得正确的图形比较

2024-06-28 05:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图比较并得到两个CSV文件之间的一个适当的交叉点。为了更好地理解,我使用了图形描述。
但与另一个图形相比,一个图形的图像变得非常模糊。
请参见以下内容:

数据如下:trade-volume.csv
下面是真实的图表:
images 1 数据如下:miners-revenue.csv
下面是真实的图表:
image 2

以下是我为比较而编写的程序:

import pandas as pd
import matplotlib.pyplot as plt


dat2 = pd.read_csv("trade-volume.csv", parse_dates=['time'])
dat3 = pd.read_csv("miners-revenue.csv", parse_dates=['time'])


dat2['timeDiff'] = (dat2['time'] - dat2['time'][0]).astype('timedelta64[D]')
dat3['timeDiff'] = (dat3['time'] - dat3['time'][0]).astype('timedelta64[D]')

fig, ax = plt.subplots()

ax.plot(dat2['timeDiff'], dat2['Value'])
ax.plot(dat3['timeDiff'], dat3['Value'])

plt.show()

我得到如下输出:
image 3

正如一个人可以看到橙色的图表是非常低,我无法理解的点,因为它是低。我愿意把这些图重叠起来再检查一下

如果不需要更改,请帮助我使用现有代码


Tags: csv数据图形time图表pltaxpd
2条回答

这两种数据的规模截然不同。为了比较它们,您可以将两者标准化

import pandas as pd
import matplotlib.pyplot as plt


dat2 = pd.read_csv("trade-volume.csv", parse_dates=['time'])
dat3 = pd.read_csv("miners-revenue.csv", parse_dates=['time'])


dat2['timeDiff'] = (dat2['time'] - dat2['time'][0]).astype('timedelta64[D]')
dat3['timeDiff'] = (dat3['time'] - dat3['time'][0]).astype('timedelta64[D]')

fig, ax = plt.subplots()

ax.plot(dat2['timeDiff'], dat2['Value']/dat2['Value'].values.max())
ax.plot(dat3['timeDiff'], dat3['Value']/dat3['Value'].values.max())

plt.show()

问题归结到你的y轴上。其中一个最大值为60000000,而另一个最大值为600000000。试图在同一个图形上绘制这些图形将导致一个“看起来”像一条直线,即使放大时不是这样

一个可能的解决方案是使用第二个y轴(您可以使用ax.plot()中的color=参数更改线的颜色:

import pandas as pd
import matplotlib.pyplot as plt

dat2 = pd.read_csv("trade-volume.csv", parse_dates=['time'])
dat3 = pd.read_csv("miners-revenue.csv", parse_dates=['time'])

dat2['timeDiff'] = (dat2['time'] - dat2['time'][0]).astype('timedelta64[D]')
dat3['timeDiff'] = (dat3['time'] - dat3['time'][0]).astype('timedelta64[D]')

fig, ax = plt.subplots()

ax.plot(dat2['timeDiff'], dat2['Value'], color="blue")

ax2=ax.twinx()
ax2.plot(dat3['timeDiff'], dat3['Value'], color="red")

plt.show()

相关问题 更多 >