2017-12-08 2 views
1

Ich benutze Jupyter Notebook, mit einem matplotlibrc Stil, der mit seinem Thema unter Verwendung jupyterthemes konsistent ist. Dieser Plotting-Stil sieht jedoch nicht gut aus, wenn ich ihn nach PNG exportieren möchte, um ihn in meinen anderen Dokumenten zu verwenden.Verwenden Sie eine andere Matplotlibre für Savefig

Wie kann ich eine andere matplotlibrc angeben, wenn ich eine savefig mache?

Antwort

2

Die meisten Einstellungen für den matplotlib-Stil werden in dem Moment angewendet, in dem das Objekt erstellt wird, auf das sie angewendet werden.
Sie müssten daher zwei verschiedene Plots erstellen, einen mit dem üblichen Stil Ihres Notebooks und einen anderen mit dem Stil aus der Style-Datei. Letzteres wäre derjenige, der gerettet werden sollte.

Eine anständige Lösung wäre, ein Diagramm in einer Funktion zu erstellen. Sie können diese Funktion dann in einem Kontext aufrufen, with plt.style.context(<your style>):, um der Figur einen anderen Stil zu geben.

import matplotlib.pyplot as plt 

def plot(): 
    fig, ax = plt.subplots() 
    ax.plot([2,3,4], label="label") 
    ax.legend() 

# Plot with general style of the notebook  
plot() 

# Plot with your chosen style for saved figures 
with plt.style.context('ggplot'): 
    plot() 
    plt.savefig("dark.png") 
    #plt.close(plt.gcf()) # if you don't want to show this figure on screen 

plt.show() 

enter image description here

Relevante hier: Die matplotlib customizing Führung.

1

Perusing matplotlib/__init__.py zeigt eine Reihe von Funktionen zur Verwaltung rcParams. So aktualisieren rcParams aus einer Datei verwenden matplotlib.rc_file:

import matplotlib as mpl 
import matplotlib.pyplot as plt 

mpl.rc_file('/tmp/matplotlibrc') 
plt.plot([0,1], [0,10]) 
plt.savefig('/tmp/out.png') 

mit /tmp/matplotlibrc enthält

lines.linewidth : 10  # line width in points 
lines.linestyle : --  # dashed line 

ergibt enter image description here


PS. Im Nachhinein, nachdem es rc_file gefunden hat, zeigt Googeln, dass es dokumentiert ist here.

Verwandte Themen