Python выводит недостающие данные - PullRequest
0 голосов
/ 12 июня 2018
day = ([ 1 , 2 , 5 , 6 , 7 , 8 , 9])
rain = ([0.6 , 0.8 , 1 , 6 , 6.5 ,7 , 4])
snow = ([ 1 , 2 , 0.5 , 7 , 8 , 9 , 10])

если я хочу построить день на оси x, а дождь и снег на оси y, и, например, иметь пунктирную линию, соединяющую дни, в которых отсутствует информация, как мне это сделать?

    plt.figure()
    plt.plot(day,rain,  marker='o')
    plt.plot(day, snow, marker='o')
    plt.show()

1 Ответ

0 голосов
/ 12 июня 2018

Вот решение.

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

day = ([ 1 , 2 , 3, 4, 5 , 6 , 7 , 8 , 9])
rain = ([0.6 , 0.8 , np.nan, np.nan, 1 , 6 , 6.5 ,7 , 4])
snow = ([ 1 , 2 , np.nan, np.nan, 0.5 , 7 , 8 , 9 , 10])

df = pd.DataFrame({'rain': rain, 'snow': snow}, index = day)
df.index.name = 'day'

fig, ax = plt.subplots()
line, = ax.plot(df['rain'].fillna(method='ffill'), ls = '--', lw = 1, label='_nolegend_')
ax.plot(df['rain'], color=line.get_color(), lw=1.5, marker = 'o')
line, = ax.plot(df['snow'].fillna(method='ffill'), ls = '--', lw = 1, label='_nolegend_')
ax.plot(df['snow'], color=line.get_color(), lw=1.5, marker = 'o')
plt.legend()
plt.xlabel('day')
plt.ylabel('mm')
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...