[PYTHON] Résumé de la grammaire souvent oubliée avec matplotlib

C'est un mémo qui est souvent oublié lorsqu'il s'agit de la bibliothèque de dessins Python "matplotlib".

2016-11-11 「ax.Ajout de "annoter les caractères et les flèches" et affinage des en-têtes
2016-11-11 Ajout de la "position de l'échelle du localisateur"
2016-12-16 Mise à jour de la "Position de l'échelle du localisateur"
2017-02-11 Ajout de la méthode "hors cadre" pour la légende

--Environnement

- Anaconda 4.0.0 (Python 2.7.13)
- CentOS 6.5
- cmap
- plt.xlim() = ax.set_xlim()

** Courbe de tendance **

** plt.fill_between ** fill

Tracé de remplissage à distance

plt.fill_between(time, value1, value2)
plt.fill_betweenx(depth, profile1, profile2) #Lors de l'écriture d'une distribution verticale

fill_demo http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.fill_between

Barre d'erreur ** plt.errorbar **

Tracé avec barre d'erreur

plt.errorbar(time, value, yerr=value_std)
plt.errorbar(profile, depth, xerr=profile_std) #Pour une distribution verticale

errorbar_demo http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.errorbar

** df.plot ** Parcelle pour les pandas

Parcelle de pandas.

df.plot(x='time', y='value1', ls='-', marker='o', color='k')
df.plot(x='time', y=['value1','value2']) #Tracez plusieurs lignes sur un graphique.
df.plot(x='time', y=['value1','value2'], subplots=True, layout=(1,2)) # ax[0], ax[1]Représenté dans chaque

--x est ʻindex par défaut, donc il peut être omis, mais je ne sais pas comment le spécifier comme y. (Y = 'index'` entraînera une erreur) --y Omission trace toutes les colonnes

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html

** plt.semilogy ** tracé de l'axe logarithmique

plt.semilogy(x, y) #l'axe y est logarithmique
plt.semilogx(x, y) #l'axe des x est logarithmique
plt.loglog(x, y) #Les deux logarithmiques
ax.plot(x, y)
ax.set_xscale("log") #Peut être réglé plus tard
ax.set_yscale("log", nonposy='clip') #Que faire si cela devient négatif.'mask'Il y a aussi

http://matplotlib.org/examples/pylab_examples/log_demo.html http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.semilogy

** ax.annotate ** lettres et flèches

ax.annotate('arrowstyle', 
            xy=(0, 1), xycoords='data',      #Pointe de la flèche(xy)La valeur de l'axe(data)Spécifié par
            xytext=(-50, 30), 
            textcoords='offset points',      #Position du personnage(xytext)La distance relative de la pointe de la flèche(offset points)Spécifié par
            arrowprops=dict(arrowstyle="->")
            )

annotation_demo2_00 http://matplotlib.org/examples/pylab_examples/annotation_demo2.html

** Tendance à oublier le réglage de l'axe **

** ax.set_xticklabels ([]) ** Effacer les étiquettes

Effacer l'étiquette d'axe (partie numéro ou date)

fig, ax = plt.subplots(1,2)

ax[0].set_xticklabels([]) #Effacez l'axe des x dans la figure ci-dessus

** DateFormatter ** Changer le format de la date

Changer le format de l'axe des temps

from matplotlib.dates import DateFormatter

ax.xaxis.set_major_formatter(DateFormatter('%m/%d\n%H:%M'))

http://matplotlib.org/api/dates_api.html#matplotlib.dates.DateFormatter

** Locator ** Position de l'échelle

** Axe des valeurs **

from matplotlib import ticker

ax.xaxis.set_major_locator(ticker.MultipleLocator(20))           #Tous les 20
ax.xaxis.set_major_locator(ticker.MaxNLocator(5))                #Jusqu'à 5

** Axe du temps **

from matplotlib import dates as mdates

ax.xaxis.set_major_locator(mdates.AutoDateLocator(maxticks=8))   #Jusqu'à 8
ax.xaxis.set_major_locator(mdates.HourLocator(12))               #12 heure
ax.xaxis.set_major_locator(mdates.HourLocator(interval=24))      #Toutes les 24 heures
ax.xaxis.set_major_locator(mdates.DayLocator(np.arange(1,31,7))) #Hebdomadaire

** Options oubliées **

** plt.savefig ** Enregistrer

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

** Transparence d'arrière-plan **

plt.savefig(filename, transparent=True) # default: False

** Petites marges **

plt.savefig(filename, bbox_inches='tight')

** plt.legend ** Légende

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.legend

** Changer l'arrangement **

plt.legend(ncol=2) #Le numéro de chaque légende côte à côte (par défaut): 1)

** Nombre de marqueurs **

plt.legend(numpoints=1) #Unifier le nombre de marqueurs (par défaut):Pour une raison quelconque 2)

Faites correspondre les points de légende avec matplotlib @ halm

** Sortir du cadre **

plt.legend(bbox_to_anchor=(1.01,1), loc=2, borderaxespad=0)

http://matplotlib.org/users/legend_guide.html#legend-location

** Autre **

** plt.rcParams [] ** Paramètres

Si vous définissez la police, etc. avant de dessiner, ce sera rapide

plt.rcParams["font.size"] = 12 #Changer la taille de la police (par défaut): 10?)

http://matplotlib.org/users/customizing.html

** matplotlibrc ** paramètres par défaut

Ou il est plus facile de changer les paramètres par défaut, alors éditez matplotlibrc

matplotlibrc


legend.numpoints = 1

** plt.style.use ** style

Modifications générales de conception

plt.style.use('ggplot')

Page de référence

Recommended Posts

Résumé de la grammaire souvent oubliée avec matplotlib
Résumé de la grammaire fréquemment utilisée dans les pandas
Résumé matplotlib
Résumé des opérations souvent effectuées avec asyncpg
API Boto3 (manipuler les ressources AWS avec la bibliothèque Python) qui est souvent utilisée en privé
Redémarrez vhost ou Apache, qui est souvent oublié
résumé grammatical de blockdiag
Animation avec matplotlib
Japonais avec matplotlib
Animation avec matplotlib
histogramme avec matplotlib
Faire une animation avec matplotlib
Manipulation de chaînes avec python et pandas que j'utilise souvent
Notez qu'écrire comme ça avec ruby c'est écrire comme ça avec python