Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在两个变量之间按月绘制数据_Python_Matplotlib - Fatal编程技术网

Python在两个变量之间按月绘制数据

Python在两个变量之间按月绘制数据,python,matplotlib,Python,Matplotlib,我想在两个变量之间绘制数据。我想用一种特殊的颜色来绘制每月的数据 我的代码和预期输出: import matplotlib.pyplot as plt df A B 2019-01-01 10 20 2019-01-02 20 30 2019-02-01 10 15 2019-02-02 20 40 2019-03-01 12 32 2019-03-02 5 14 plt.plot(df['A'],df['B

我想在两个变量之间绘制数据。我想用一种特殊的颜色来绘制每月的数据

我的代码和预期输出:

import matplotlib.pyplot as plt

df
             A     B
2019-01-01   10   20
2019-01-02   20   30
2019-02-01   10   15
2019-02-02   20   40
2019-03-01   12   32
2019-03-02   5    14

plt.plot(df['A'],df['B'])
plt.show()
我当前的图像往常一样绘制了所有数据,但我希望下面给出的数据有所不同。 我的预期产出:


2019-03-01 10 20

你可以这样做:

markers = 'dsxo'
months = pd.to_datetime(df.index).to_period('M')

for i, (k,d) in enumerate(df.groupby(months) ):
    plt.plot(d['A'],d['B'], label=k, marker=markers[i])

plt.legend()
输出:

检查此代码:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('data.csv')

df['Month'] = df.index.map(lambda x: x[:-3])

fig, ax = plt.subplots(1, 1, figsize = (6, 6))
for month in df['Month'].unique():
    ax.plot(df[df['Month'] == month]['A'],
            df[df['Month'] == month]['B'],
            label = month)

plt.legend()
plt.show()
这给出了这个图表:


这看起来不错。实际上我有两年的数据。那么,24个标记。在这种情况下如何做到这一点?当我运行代码时,会出现以下错误:
AttributeError:“Index”对象没有属性“to_period”
下面是标记列表。另请参见字符串索引的更新。将
plot
替换为
scatter
。只需删除
makerfacecolor
<代码>散点没有