如何绘制股价图表?为什么我的结果与正确的结果如此不同

how to plot a stock price chart? Why is my result so different from the right one

这是我的代码。

import numpy as np
from matplotlib import pyplot as plt
import pandas as pd

data1 = pd.read_csv("data.csv",delimiter=",")
%matplotlib inline
plt.plot(data1["date"],data1["close"])
plt.show()

这是数据的样子。stock price data。它有 4158 行。

这是my result

这就是它应该的样子(蓝色的)。right answer

我的结果似乎丢失了太多细节。

Eli Lin,在绘制图表之前,您必须处理 data1['date']。此列应包含 datetime 个对象,而是包含 int 个对象。

我复制了你的部分数据集,不过,我相信这已经足够了:

data1 = pd.DataFrame({'index': np.arange(0, 14).tolist(),
                      'code' : '000300.SH',
                      'date' : [20050104,20050105,20050106,20050107,20050110,20050111,20050112,20050113,20050114,20050117,20050118,20050119,20050120,20050121],
                      'open' : [994.796,981.577,993.331,983.045,983.760,994.189,996.651,996.078,996.617,979.111,967.374,974.333,963.213,954.462],
                      'close': [982.794,992.564,983.174,983.958,993.879,997.135,996.748,996.877,988.306,967.452,974.689,967.210,956.245,982.604]
})
data1

  index      code       date       open     close
 0    0 000300.SH   20050104    994.796   982.794
 1    1 000300.SH   20050105    981.577   992.564
 2    2 000300.SH   20050106    993.331   983.174
 3    3 000300.SH   20050107    983.045   983.958
 4    4 000300.SH   20050110    983.760   993.879
 5    5 000300.SH   20050111    994.189   997.135
 6    6 000300.SH   20050112    996.651   996.748
 7    7 000300.SH   20050113    996.078   996.877
 8    8 000300.SH   20050114    996.617   988.306
 9    9 000300.SH   20050117    979.111   967.452
10   10 000300.SH   20050118    967.374   974.689
11   11 000300.SH   20050119    974.333   967.210
12   12 000300.SH   20050120    963.213   956.245
13   13 000300.SH   20050121    954.462   982.600 

首先,让我们将日期更改为 datetime:

data1['date'] = pd.to_datetime(data1['date'], format='%Y%m%d')
data1

   index         code         date     open    close
 0     0    000300.SH   2005-01-04  994.796  982.794
 1     1    000300.SH   2005-01-05  981.577  992.564
 2     2    000300.SH   2005-01-06  993.331  983.174
 3     3    000300.SH   2005-01-07  983.045  983.958
 4     4    000300.SH   2005-01-10  983.760  993.879
 5     5    000300.SH   2005-01-11  994.189  997.135
 6     6    000300.SH   2005-01-12  996.651  996.748
 7     7    000300.SH   2005-01-13  996.078  996.877
 8     8    000300.SH   2005-01-14  996.617  988.306
 9     9    000300.SH   2005-01-17  979.111  967.452
10    10    000300.SH   2005-01-18  967.374  974.689
11    11    000300.SH   2005-01-19  974.333  967.210
12    12    000300.SH   2005-01-20  963.213  956.245
13    13    000300.SH   2005-01-21  954.462  982.604

为了绘图和添加一些样式,您可以导入一些库,但不是强制性的:

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set_style('darkgrid')

现在你可以用这个来策划你的聊天:

data1.plot(x='date', y='close', figsize=(12,6));