2015-12-08 3 views
0

У меня возникли проблемы с использованием matplotlib и использованием типа заполнения. Я прикрепил изображение того, как выглядит мой plt.fill. Я создал график из фрейма данных, содержащего даты в первом столбце, а затем вычисленные значения в следующем столбце. Я бы с удовольствием разместил образцы данных, если это необходимо, но я хотел показать, что происходит с моим сюжетом ... Кажется очень странным, что он заполняется ниже 0 (если я здесь что-то не хватает), а затем, в конце, он меняет все вдоль диагональной линии.Matplotlib plot.fill обрабатывает данные некорректно, заполняет отрицательные значения и сдвигает

Любая помощь очень ценится!

import pandas as pd 
import numpy as np 
import os as os 
import matplotlib as mpl 
import matplotlib.pyplot as plt 
import datetime as dt 

#set working path 
working_path = '/Users/Earth/desktop/mydata' 
os.chdir(working_path) 

# name csv files to variables 
chilled_water_supply = 'chilled_water_supply1.csv' 
chilled_water_return = 'chilled_water_return1.csv' 
chilled_water_flow = 'CofK_CW_Flow.csv' 

#read correct date time format from csv file 
datetimeparse1 = lambda x: pd.datetime.strptime(x, '%m/%d/%Y %H:%M') 

#import chilled water temperautres and flow 
df_chwsup = pd.read_csv(chilled_water_supply, parse_dates = ['Date_Time'], date_parser = datetimeparse1) 
df_chwret = pd.read_csv(chilled_water_return, parse_dates = ['Date_Time'], date_parser = datetimeparse1) 
df_chwflow = pd.read_csv(chilled_water_flow, parse_dates = ['Date_Time'], date_parser = datetimeparse1) 

#set start date time and length of period 
startdate = dt.datetime(2015,7,14,11,41,0) 
numintervals = (14*24*60) 

#create data frame with index of row numbers and correct date time period 
df_datetime = pd.DataFrame(pd.date_range(startdate ,periods = numintervals, freq = "1min"), columns = ["Date_Time"]) 

#creating master data frame with outputs 
df_mstr1 = pd.merge(df_datetime, df_chwsup, how = 'left', left_on = 'Date_Time', right_on = 'Date_Time') 
df_mstr2 = pd.merge(df_mstr1, df_chwret, how = 'left', left_on = 'Date_Time', right_on = 'Date_Time') 
df_mstr3 = pd.merge(df_mstr2, df_chwflow, how= 'left', left_on = 'Date_Time', right_on = 'Date_Time') 
df_mstr3['tons'] = 500*(1/12000)*df_mstr3['flow_gpm']*(df_mstr2['chwr_temp_F'] - df_mstr1['chws_temp_F']) 

#plot cooling tons over date time period 
x1 = df_mstr3['Date_Time'] 
y1 = df_mstr3['tons'] 
plt.Line2D(x1,y1) 
plt.xlim(dt.datetime(2015,7,14), dt.datetime(2015,7,28)) 
plt.ylim(-100,300) 
plt.show() 

enter image description here

+0

Можете ли вы предоставить код, чтобы взглянуть на? – DimKoim

+0

Я включил код ... должен ли я включать файлы данных? – Prevost

+0

Я добавил код ошибки, который возникает при использовании plt.Line2D ... Я построил его с помощью ggplot, и он работает с этим пакетом, но я хотел бы использовать matplotlib и выяснить, что здесь происходит. – Prevost

ответ

0

Может попробовать использовать панд API для Matplotlib:

df.index = df.date_time 
df['tons'].plot(kind='area') 
+0

Я экспортировал данные в файл csv, затем открылся в Excel, данные в порядке. Должно быть что-то с Matplotlib ... – Prevost

Смежные вопросы