【问题标题】:Solid and dashed parts of line in one python plot with matplotlib使用 matplotlib 在一个 python 图中的实线和虚线部分
【发布时间】:2019-11-20 07:04:46
【问题描述】:

我可以用下面的代码画一条两线的图,没问题。

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

# Data

df=pd.DataFrame({'dates': ['2001','2002','2003','2030'], 'census_people': [306,327,352,478], 'census_houses': [150,200,249,263]})

# multiple line plot
plt.plot('dates', 'census_people', data=df, marker='o', color='green', linewidth=2)
plt.plot('dates','census_houses',data=df,marker='o',color='orange',linewidth=2)

我的问题是,我希望两条线都是实心的,除了 2003 年和 2030 年之间的那部分线,我想用虚线(因为它是对未来会发生什么的预测)。所以类似于this,其中过去的数据(即连接前三个数据点的线)是实线,未来的预测数据(即连接第三和第四个数据点的线)是虚线。

(我可以找到很多绘制虚线的示例,而不是在同一条线上绘制实线和虚线)。

【问题讨论】:

  • 对,因为一条线要么是实线,要么是虚线,而不是两者兼而有之。但很明显,您可以绘制两条线,一条实线,一条虚线。

标签: python matplotlib


【解决方案1】:

我不知道是否有办法按照您的意愿进行操作,但我会分别绘制它们:

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

# Data

df=pd.DataFrame({'dates': [2001, 2002, 2003, 2030], 'census_people': [306,327,352,478], 'census_houses': [150,200,249,263]}) #I changed the dates from strings to ints

# multiple line plot
plt.plot('dates', 'census_people', data=df[df['dates'] < 2004], marker='o', color='green', linewidth=2)
plt.plot('dates', 'census_people', data=df[df['dates'] > 2002], marker='o', color='green', linewidth=2, linestyle = '--')
plt.plot('dates','census_houses',data=df[df['dates'] < 2004] ,marker='o',color='orange', linewidth=2)
plt.plot('dates','census_houses',data=df[df['dates'] > 2002] ,marker='o',color='orange', linewidth=2, linestyle = '--')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多