Сплошные и пунктирные части линии в одном графике Python с Matplotlib - PullRequest
0 голосов
/ 10 июля 2019

Я могу нарисовать график с двумя линиями, используя приведенный ниже код без проблем.

# 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 годами, которую я хочу разбить (поскольку это проекция того, что произойдет в будущем). Таким образом, что-то вроде это , где прошлые данные (т.е. линия, соединяющая первые три точки данных) - это сплошная линия, а будущие проецируемые данные (т.е. линия, соединяющая третью и четвертую точку данных) - это пунктирная линия.

(я могу найти множество примеров построения пунктирной линии, но не сплошной и пунктирной на одной линии).

1 Ответ

1 голос
/ 10 июля 2019

Я не знаю, есть ли способ сделать это так, как вы, кажется, хотите это сделать, но то, что я хотел бы сделать, это нарисовать их отдельно:

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 = '--')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...