2016-08-04 9 views
2

Ich habe ein Grundstück mit Seaborn, Hier ist meine Pltt enter image description here Ich würde gerne ein Etikett für jede Zeile hinzufügen. Können Sie mir bitte helfen?fügen Sie ein Etikett zu einem Grundstück mit Seeborn

import numpy as np 
import matplotlib.pylab as plt 
import matplotlib.dates as mdates 


from matplotlib import style 
import pandas as pd 
%pylab inline 
import seaborn as sns 
sns.set_style('darkgrid') 
import io 
style.use('ggplot') 
from datetime import datetime 
import time 
fig = plt.figure(figsize=(12, 8), dpi=100) 
ax1 = fig.add_subplot(111) 
x1 = pd.to_datetime(df_no_missing.TIMESTAMP, format="%h:%m") 
y1 = df_no_missing.P_ACT_KW 
y3 = df_no_missing.P_SOUSCR 
yearFmt = mdates.DateFormatter("%H:%M:%S") 
ax1.xaxis.set_major_formatter(yearFmt) 
ax2 = ax1.twinx() 

ax1.plot(x, y1, 'g-') 
ax2.plot(x, y2, 'b-') 
ax1.plot(x, y3, 'r-') 
ax1.set_xlabel('temps') 
ax1.set_ylabel('puissance', color='g') 
ax2.set_ylabel('dépassement', color='b') 
plt.ylim(plt.ylim()[0], 1.0) 
plt.show() 

Vielen Dank im Voraus EDIT

ich wie Sie versuchen, erwähnen:

fig = plt.figure(figsize=(12, 5), dpi=100) 
ax1 = fig.add_subplot(111) 
x1 = pd.to_datetime(df_no_missing.TIMESTAMP, format="%h:%m") 
y1 = df_no_missing.P_ACT_KW 
y3 = df_no_missing.P_SOUSCR 
yearFmt = mdates.DateFormatter("%H:%M:%S") 
ax1.xaxis.set_major_formatter(yearFmt) 
ax2 = ax1.twinx() 
ax1.plot(x, y1, 'g-', label='label 1') 
ax2.plot(x, y2, 'b-', label='label 2') 
ax1.plot(x, y3, 'r-', label='label 3') 
ax1.plot(0, 0, 'b-', label='label 2') 
ax.legend(loc=0)    # add legend in top right corner 
ax.grid()     # show grid lines 
ax1.set_xlabel('temps') 
ax1.set_ylabel('puissance', color='g') 
ax2.set_ylabel('dépassement', color='b') 
plt.ylim(plt.ylim()[0], 1.0) 
plt.show() 

Aber ich habe diesen Fehler:

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
C:\Users\Demonstrator\Anaconda3\lib\site-packages\IPython\core\formatters.py 

in call(self, obj) 337 pass 338 else: --> 339 return printer(obj) 340 # Finally look for special method names 341 method = _safe_get_formatter_method(obj, self.print_method)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\IPython\core\pylabtools.py 

in (fig) 226 227 if 'png' in formats: --> 228 png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs)) 229 if 'retina' in formats or 'png2x' in formats: 230 png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

C:\Users\Demonstrator\Anaconda3\lib\site-packages\IPython\core\pylabtools.py 

in print_figure(fig, fmt, bbox_inches, **kwargs) 117 118 bytes_io = BytesIO() --> 119 fig.canvas.print_figure(bytes_io, **kw) 120 data = bytes_io.getvalue() 121 if fmt == 'svg':

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\backend_bases.py 

in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs) 2178 orientation=orientation, 2179 dryrun=True, -> 2180 **kwargs) 2181 renderer = self.figure._cachedRenderer 2182 bbox_inches = self.figure.get_tightbbox(renderer)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py 

in print_png(self, filename_or_obj, *args, **kwargs) 525 526 def print_png(self, filename_or_obj, *args, **kwargs): --> 527 FigureCanvasAgg.draw(self) 528 renderer = self.get_renderer() 529 original_dpi = renderer.dpi

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py 

in draw(self) 472 473 try: --> 474 self.figure.draw(self.renderer) 475 finally: 476 RendererAgg.lock.release()

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\artist.py 

in draw_wrapper(artist, renderer, *args, **kwargs) 59 def draw_wrapper(artist, renderer, *args, **kwargs): 60 before(artist, renderer) ---> 61 draw(artist, renderer, *args, **kwargs) 62 after(artist, renderer) 63

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\figure.py 

in draw(self, renderer) 1157 dsu.sort(key=itemgetter(0)) 1158 for zorder, a, func, args in dsu: -> 1159 func(*args) 1160 1161 renderer.close_group('figure')

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\artist.py 

in draw_wrapper(artist, renderer, *args, **kwargs) 59 def draw_wrapper(artist, renderer, *args, **kwargs): 60 before(artist, renderer) ---> 61 draw(artist, renderer, *args, **kwargs) 62 after(artist, renderer) 63

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\axes\_base.py 

in draw(self, renderer, inframe) 2322 2323 for zorder, a in dsu: -> 2324 a.draw(renderer) 2325 2326 renderer.close_group('axes')

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\artist.py 

in draw_wrapper(artist, renderer, *args, **kwargs) 59 def draw_wrapper(artist, renderer, *args, **kwargs): 60 before(artist, renderer) ---> 61 draw(artist, renderer, *args, **kwargs) 62 after(artist, renderer) 63

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\axis.py 

in draw(self, renderer, *args, **kwargs) 1104 renderer.open_group(name) 1105 -> 1106 ticks_to_draw = self._update_ticks(renderer) 1107 ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw, 1108 renderer)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\axis.py 

in _update_ticks(self, renderer) 947 948 interval = self.get_view_interval() --> 949 tick_tups = [t for t in self.iter_ticks()] 950 if self._smart_bounds: 951 # handle inverted limits

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\axis.py 

in (.0) 947 948 interval = self.get_view_interval() --> 949 tick_tups = [t for t in self.iter_ticks()] 950 if self._smart_bounds: 951 # handle inverted limits

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\axis.py 

in iter_ticks(self) 890 Iterate through all of the major and minor ticks. 891 """ --> 892 majorLocs = self.major.locator() 893 majorTicks = self.get_major_ticks(len(majorLocs)) 894 self.major.formatter.set_locs(majorLocs)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\dates.py 

in call(self) 1004 def call(self): 1005 'Return the locations of the ticks' -> 1006 self.refresh() 1007 return self._locator() 1008

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\dates.py 

in refresh(self) 1024 def refresh(self): 1025 'Refresh internal information based on current limits.' -> 1026 dmin, dmax = self.viewlim_to_dt() 1027 self._locator = self.get_locator(dmin, dmax) 1028

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\dates.py 

in viewlim_to_dt(self) 768 vmin, vmax = vmax, vmin 769 --> 770 return num2date(vmin, self.tz), num2date(vmax, self.tz) 771 772 def _get_unit(self):

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\dates.py 

in num2date(x, tz) 417 tz = _get_rc_timezone() 418 if not cbook.iterable(x): --> 419 return _from_ordinalf(x, tz) 420 else: 421 x = np.asarray(x)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\matplotlib\dates.py 

in _from_ordinalf(x, tz) 269 270 ix = int(x) --> 271 dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC) 272 273 remainder = float(x) - ix

ValueError: ordinal must be >= 1 





<matplotlib.figure.Figure at 0x1d3b041a400> 
print (df_no_missing.head()) 
   TIMESTAMP P_ACT_KW PERIODE_TARIF P_SOUSCR  SITE \ 
145 2015-08-01 23:10:00  248.0   HC  425.0 ST GEREON 
146 2015-08-01 23:20:00  244.0   HC  425.0 ST GEREON 
147 2015-08-01 23:30:00  243.0   HC  425.0 ST GEREON 
148 2015-08-01 23:40:00  238.0   HC  425.0 ST GEREON 
149 2015-08-01 23:50:00  234.0   HC  425.0 ST GEREON 

      TARIF depassement  date  time 
145 TURPE_HTA5   0.0 2015-08-01 23:10:00 
146 TURPE_HTA5   0.0 2015-08-01 23:20:00 
147 TURPE_HTA5   0.0 2015-08-01 23:30:00 
148 TURPE_HTA5   0.0 2015-08-01 23:40:00 
149 TURPE_HTA5   0.0 2015-08-01 23:50:00 
+2

Meinten Sie 'legend' statt' durch Zufall label'? –

+0

@NickilMaveli Vielen Dank für Ihre Antwort :: zum Beispiel wie in der letzten Handlung in diesem Tutorial: https://bespokeblog.wordpress.com/2011/07/07/basic-data-plotting-with-matplotlib-part-2 -line-points-formatforming/(für Kreis und Quadrat) – Bio

+0

Lernen Sie, [mcve] zu erstellen. Ihre Frage enthält viel unnötigen Code. –

Antwort

0

Sie können die label Namen für jede Unterplot-Achse angeben und plt.legend verwenden, um die entsprechenden Legenden zur mittleren rechten Ecke hinzuzufügen.

fig = sns.plt.figure(figsize=(12, 5), dpi=100) 
ax1 = fig.add_subplot(111) 
x1 = pd.to_datetime(df_no_missing.TIMESTAMP) 
y1 = df_no_missing.P_ACT_KW 
y2 = df_no_missing.depassement 
y3 = df_no_missing.P_SOUSCR 
yearFmt = mdates.DateFormatter("%H:%M:%S") 
ax1.xaxis.set_major_formatter(yearFmt) 
ax1.plot(x1, y1, 'g-', label='p_act_kw') 
ax1.plot(x1, y3, 'r-', label='p_souscr') 
ax2 = ax1.twinx() 
ax2.plot(x1, y2, 'b-', label='depassement') 
h1, l1 = ax1.get_legend_handles_labels() 
h2, l2 = ax2.get_legend_handles_labels() 
ax1.legend(h1+h2, l1+l2, loc='center right') 
ax1.set_xlabel('temps') 
ax1.set_ylabel('puissance', color='g') 
ax2.set_ylabel('dépassement', color='b') 
sns.plt.ylim(plt.ylim()[0], 1.0) 
sns.plt.show() 

Image

+0

Nein, ich bearbeite meinen ersten Beitrag, um Ihnen zu erklären, welche Art von Fehler ich habe. danke – Bio

+0

Ich habe die Argumente leicht geändert. Sehen Sie, wenn das funktioniert. –

+0

Nein, ein weiterer Fehler: "ValueError: ordinal muss sein> = 1" – Bio

Verwandte Themen