2017-04-06 1 views
1

Ich habe in letzter Zeit Stylesheets in matplotlib verwendet. Ich mag es wirklich, wie sauber die seaborn-white aussieht und ich möchte in der Lage sein, die Grenze zu anderen Stilen wie ggplot oder seaborn-whitegrid hinzuzufügen.Wie fügt man schwarzen Grenze zu Matplotlib 2.0 `Axe` Objekt in Python 3?

Wie kann ich einen schwarzen Rahmen um mein ax Objekt von fig, ax = plt.subplots() hinzufügen?

import pandas as pd 
import numpy as np 
from collections import * 

Se_data = pd.Series(Counter(np.random.randint(0,10,100))) 
with plt.style.context("seaborn-whitegrid"): 
    fig, ax = plt.subplots() 
    Se_data.plot(kind="barh", ax=ax, title="No Border") 
with plt.style.context("seaborn-white"): 
    fig, ax = plt.subplots() 
    Se_data.plot(kind="barh", ax=ax, title="With Border") 

enter image description here

Als Reaktion auf die Antwort unter:

Se_data = pd.Series(Counter(np.random.randint(0,10,100))) 
with plt.style.context("seaborn-whitegrid"): 
    fig, ax = plt.subplots() 
    Se_data.plot(kind="barh", ax=ax, title="No Border") 
    ax.spines['bottom'].set_color('0.5') 
    ax.spines['top'].set_color(None) 
    ax.spines['right'].set_color('0.5') 
    ax.spines['left'].set_color(None) 
    ax.patch.set_facecolor('0.1') 
    plt.grid(b=True, which='major', color='0.2', linestyle='-') 
    plt.grid(b=True, which='minor', color='0.2', linestyle='-') 
    ax.tick_params(axis='x', colors='0.7', which='both') 
    ax.tick_params(axis='y', colors='0.7', which='both') 
    ax.yaxis.label.set_color('0.9') 
    ax.xaxis.label.set_color('0.9') 
    ax.margins(5) 
    fig.patch.set_facecolor('0.15') 

enter image description here

+0

Ich glaube, ich hier etwas fehlt bin. Wenn du den "Seaborn-White" -Stil magst, was ist falsch daran, ihn einfach zu benutzen, anstatt jeden anderen Stil? – ImportanceOfBeingErnest

+0

Ich wollte wissen, wie die Grenzen zugewiesen sind, so dass ich es auf jede Handlung hinzufügen kann –

+0

Ich denke, meine Antwort unten beantwortet das. Die Ränder sind immer da, nur ihre Farbe ist dunkler und die Linienstärke ist dicker im "seaborn-white" Stil. – ImportanceOfBeingErnest

Antwort

1

Der Unterschied zwischen dem Seaborn-whitegrid und die Seaborn-weiß Stile sind

Seaborn-whitegrid

axes.grid: True 
axes.edgecolor: .8 
axes.linewidth: 1 

seaborn-weiß

axes.grid: False 
axes.edgecolor: .15 
axes.linewidth: 1.25 

Im Folgenden wird daher identisch Plots bieten:

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 
from collections import * 

Se_data = pd.Series(Counter(np.random.randint(0,10,100))) 
with plt.style.context("seaborn-whitegrid"): 
    plt.rcParams["axes.edgecolor"] = "0.15" 
    plt.rcParams["axes.linewidth"] = 1.25 
    fig, ax = plt.subplots() 
    Se_data.plot(kind="barh", ax=ax, title="No Border") 
with plt.style.context("seaborn-white"): 
    plt.rcParams["axes.grid"] = True 
    fig, ax = plt.subplots() 
    Se_data.plot(kind="barh", ax=ax, title="With Border") 

enter image description here

2

Sie wollen wahrscheinlich ax.splines.set_color()

diese wird Ihnen eine breite Palette von Optio ns für kundenspezifische Lösungen:

ax.spines['bottom'].set_color('0.5') 
ax.spines['top'].set_color(None) 
ax.spines['right'].set_color('0.5') 
ax.spines['left'].set_color(None) 
ax.patch.set_facecolor('0.1') 
plt.grid(b=True, which='major', color='0.2', linestyle='-') 
plt.grid(b=True, which='minor', color='0.2', linestyle='-') 
ax.tick_params(axis='x', colors='0.7', which='both') 
ax.tick_params(axis='y', colors='0.7', which='both') 
ax.yaxis.label.set_color('0.9') 
ax.xaxis.label.set_color('0.9') 
ax.margins(0.5) 
fig.patch.set_facecolor('0.15') 

docs: http://matplotlib.org/api/spines_api.html

+0

Ich konnte das nicht mit meinem Beispiel –

+0

arbeiten ax.margins (5) sollte ax.margins (0.5) sein – litepresence

+0

Der Hintergrund ist immer noch schwarz:/und die Grenzen gehen weg, sobald ich ändere es in Weiß. –

Verwandte Themen