2017-07-11 2 views
0

Ce que je veux faire est une parcelle de génération et de la demande dans un réseau électrique avec Matplotlib en Python. Ceci est mon code:python matplotlib markerscale pour la parcelle

fig,ax = plt.subplots(figsize=(14,8)) 
generation.plot(kind="area", ax=ax, linewidth=1, alpha=0.9) 
load.plot(kind="area", ax=ax, linewidth=1, alpha=0.9) 
labels = ['Erzeugung', 'Last'] 
ax.legend(labels, ncol=4, loc="best", markerscale=10) 
ax.set_ylabel("GW") 
ax.set_xlabel("") 
plt.tight_layout() 

Le résultat ressemble à ceci:

enter image description here

Ma question est sur le markerscale: Pourquoi ne pas travailler avec ce genre de complot? Le problème est la mauvaise visibilité du marqueur dans la légende, ce serait beaucoup mieux avec une ligne plus épaisse ou même une boîte. Et ceci sans augmenter la largeur de ligne des lignes. Des idées?

+0

Et l'autre: https://stackoverflow.com/questions/ 42758897/change-line-width-of-lines-in-matplotlib-pyplot-legend – Bart

Répondre

0

Vous pouvez définir la taille de la ligne manuellement après la création comme suit:

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

fig, ax = plt.subplots(figsize=(14,8)) 

generation = pd.DataFrame(np.random.randint(10, 14, 10)) 
load = pd.DataFrame(np.random.randint(2, 5, 10)) 

generation.plot(kind="area", ax=ax, linewidth=1, alpha=0.9) 
load.plot(kind="area", ax=ax, linewidth=1, alpha=0.9) 

labels = ['Erzeugung', 'Last'] 

legend = ax.legend(labels, ncol=4, loc="best") 

for handle in legend.legendHandles: 
    handle.set_linewidth(3.0) 

ax.set_ylabel("GW") 
ax.set_xlabel("") 
plt.tight_layout() 

plt.show() 

vous donner quelque chose comme:

matplotlib with bigger legend line

+0

C'est toujours pareil: ça peut être si facile. Merci beaucoup !! – Sitzhocker