Python 使matplotlib时间序列中的线变粗';意大利面';情节

Python 使matplotlib时间序列中的线变粗';意大利面';情节,python,pandas,matplotlib,Python,Pandas,Matplotlib,谢谢你的阅读 我有一个情节,想让我的数据集中最近的一年脱颖而出。我的数据只是一个很长的时间序列,所以我想绘制年环比比较,所以我将其旋转,然后绘制 第一段代码运行并大致给出了我想要的内容(最近一年没有突出),然后在第二段代码中,我尝试使我的最新版本突出(技术上可行),但颜色不同,与图例不匹配,甚至可以与另一年的颜色相同 我可以在背景中看到旧的系列。我想我正在创造另一个情节并将其放在最上面,但我如何才能选择最近一年(在本例中为2018年)的原始路线并使其脱颖而出 还是有更好的方法来完成整个过程? 任

谢谢你的阅读

我有一个情节,想让我的数据集中最近的一年脱颖而出。我的数据只是一个很长的时间序列,所以我想绘制年环比比较,所以我将其旋转,然后绘制

第一段代码运行并大致给出了我想要的内容(最近一年没有突出),然后在第二段代码中,我尝试使我的最新版本突出(技术上可行),但颜色不同,与图例不匹配,甚至可以与另一年的颜色相同

我可以在背景中看到旧的系列。我想我正在创造另一个情节并将其放在最上面,但我如何才能选择最近一年(在本例中为2018年)的原始路线并使其脱颖而出

还是有更好的方法来完成整个过程? 任何关于代码、格式或任何东西的提示都将不胜感激,我对此非常陌生

非常感谢

13森1


第一街区

# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='01-01-2019', freq='M')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by month in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.month, columns=df.index.year, values='Data')

# plot
df_pivot.plot(title='Data by Year', figsize=(6,4))
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.tight_layout()
plt.show()

第二街区

# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='01-01-2019', freq='M')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by month in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.month, columns=df.index.year, values='Data')

# plot
df_pivot.plot(title='Data by Year', figsize=(6,4))
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.tight_layout()

# plot the thicker last line
# **************** ERROR HERE *************************
plt.plot(df_pivot.iloc[:, -1:], lw=4, ls='--')
# **************** ERROR HERE *************************
plt.show()

你可以把去年的产品线做得更厚一些。由于列已排序,因此它将是轴中的最后一行(索引
-1


这正是我想要的。非常感谢您快速完美的回复。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='01-01-2019', freq='M')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by month in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.month, columns=df.index.year, values='Data')

# plot
ax = df_pivot.plot(title='Data by Year', figsize=(6,4))
ax.get_lines()[-1].set_linewidth(5)
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

ax.figure.tight_layout()
plt.show()