python - 在 matplotlib 时间序列“意大利面条”图中使线条变粗
问题描述
谢谢阅读。
我有一个情节,想让我的数据集中的最新年份脱颖而出。我的数据只是一个较长的时间序列,所以我想绘制 YoY 比较,所以我将其旋转,然后绘制它。
第一个代码块运行并大致给出了我所追求的(没有最近一年突出),然后在第二个代码块中我尝试让我的最新代码脱颖而出(这在技术上有效)但颜色不同,不'不匹配传说,甚至可以与另一年相同的颜色。
我可以在背景中看到旧系列。我想我正在创建另一个情节并将其放在首位,但是我怎样才能选择最近一年(在本例中为 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()
推荐阅读
- hana - 获取 Hana SAP DBTech JDBC:应用程序启动时对象已关闭错误
- regex - 如何在以java中可能存在或不存在的东西开头的键上使用mongo unset
- python - python asyncio中的SelectorEventLoop和ProactorEventLoop是什么
- python - 为什么在函数中的 IF 语句之后分配局部变量的语法无效?
- spring-boot - 如何解决spring boot null问题
- python - pyside6 QTranslator 加载文件失败
- docker - 如何在 docker build(Dockerfile)上显示 curl 进度条?
- c# - 是否有可能有重叠的正则表达式匹配?
- visual-studio - 通过 Visual Studio 调试时无法导出或导入文件
- annotations - AnyChart:适合以价格包含注释线