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()
Tracé de remplissage à distance
plt.fill_between(time, value1, value2)
plt.fill_betweenx(depth, profile1, profile2) #Lors de l'écriture d'une distribution verticale
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.fill_between
Tracé avec barre d'erreur
plt.errorbar(time, value, yerr=value_std)
plt.errorbar(profile, depth, xerr=profile_std) #Pour une distribution verticale
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.errorbar
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(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('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="->")
)
http://matplotlib.org/examples/pylab_examples/annotation_demo2.html
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
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
** 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
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')
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
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
Ou il est plus facile de changer les paramètres par défaut, alors éditez matplotlibrc
matplotlibrc
legend.numpoints = 1
Modifications générales de conception
plt.style.use('ggplot')
Recommended Posts