2016-05-31 7 views
1

Wenn ich den x, y-Label von axises einstellen will, ich habe so etwas wie dies zu tun:Matplotlib: set x y-Label in einer Zeile

import matplotlib.pyplot as plt 
plt.plot([1,2,3,4]) 
plt.ylabel('This is y label') 
plt.xlabel('This is x label') 
plt.show() 

I xlabel, ylabel separat einstellen müssen.

Ich frage mich, wenn eine Syntax sugur ist, dass ich so etwas wie zu tun:

plt.label('x label', 'y label') 

so dass der Code sieht kompakter?

Oder wie kann ich irgendeine benutzerdefinierte Funktion dazu machen?

+1

Hat Ihr Code (oder Sie) wirklich darunter leiden, diese beiden Zeilen zu schreiben? – Chiel

Antwort

4

Sobald Sie beginnen, das objektorientierte Modell von matplotlib mit häufiger, werden Sie in der Lage sein, alle relevanten Parameter einer Achse als Schlüsselwörter zu den Funktionen hinzuzufügen, die diese machen Achsen.

Ein einfaches Beispiel:

fig = plt.figure() 
ax = fig.add_subplot(111, xlabel="time", ylabel="money") 

Ein längeres Beispiel:

fig1 = plt.figure(figsize=(10,8)) 
ax1 = fig1.add_axes((0.1, 0.1, 0.8, 0.8), # full positional control 
    frameon=True,       # display frame boundary 
    aspect='equal',      # set aspect ratio upon creation 
    adjustable='box',      # what part of the axes can change to meet the aspect ratio requirement? 
    xticks=[0.1, 1.2, 10],     
    xlabel='voltage (V)', 
    xlim=(0.05, 10.05), 
    yticks=[0, 10], 
    ylabel='current (µA)', 
    ylim=(0, 2)) 

auf dem empfangenen Kommentar Nach oben können Sie auch den "Eigenschaft Batch-Setter" machen ax.set, die a nette kleine Matplotlib-Komfortfunktion.

plt.close('all') 
plt.plot([1,2,3], [4, 7, 1]) 
plt.gca().set(xlabel='x', ylabel='y') 
+0

Könnten Sie ein Beispiel geben, um den Label-Wert der "Axt" zu ändern und einen neuen zu initiieren? – cqcn1991

+0

@ cqcn1991 Sicher, siehe das Update. –

+0

Vielen Dank. Ein zusätzlicher Gedanke, könnten Sie mir einen Link der Dokumentation geben? Ich möchte es auch mit der Einstellung "Legende" kombinieren. – cqcn1991

1

Vielleicht kann dies helfen Ihnen

import matplotlib.pyplot as plt 

def grap_label(g, lx='',ly=''): 
    plt.xlabel(lx) 
    plt.ylabel(ly) 
    plt.show() 

grap_label(plt.plot([1,2,3,4]), 'This is x label','This is y label') 
+0

Ja, ich mache eine sehr ähnliche Funktion, außer dass ich 'lx = None' als Standardwert eingestellt habe. Aber ich denke, es auf eine leere Saite zu setzen ist schlauer. Also muss ich keine if-Anweisung machen, um zu überprüfen, ob es 'None' ist. – cqcn1991

+0

Es ist keine gute Idee, eine Funktion zu schreiben, die' plt' verwendet, Sie sollten Funktionen schreiben, die Achsenobjekte aufnehmen und dann an ihnen arbeiten. – tacaswell

Verwandte Themen