Es kann mit python2.6
+matplotlib (1.4.3)
[^ 1] ausgeführt werden.
[^ 1]: Kann nicht mit matplotlib (1.0.1)
ausgeführt werden
Wenn Sie der Achse beim Erstellen eines Diagramms einen völlig anderen Maßstab geben möchten.
Dieses Mal zeichnen Sie im Unterplot nach dem Erstellen der Achse die Daten auf der Achse "ax1.twinx (). Twiny ()".
Das Plotziel ist rand.txt
, das ich jedes Mal benutze.
python
$ perl -le 'print rand (10) for 0 .. 99' > rand.txt
replace.py
#!/usr/bin/env python -B
# -*- coding: utf-8 -*-
import sys
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv(sys.argv[1], header=None)
#Achsenplot
fig, ax1 = plt.subplots()
ax1.xaxis_date() #X ist eine Zeitreihe
ax1.set_ylim([0,100]) #Y ist 0~100
ax1.grid(True)
ax = ax1.twinx().twiny()
#Datenplot
df.plot(ax=ax,xticks=[],yticks=[])
ax.legend().set_visible(False)
ax.grid(False)
fig.subplots_adjust( bottom=0.15, top=0.95,left=0.1, right=0.95)
plt.savefig(sys.argv[2])
python
$ python replace.py rand.txt graph.png
Beim Umgang mit Zeitreihen mit matplotlib
scheint das Plotten von Daten [^ 2], die eine große Anzahl von Zeitstempeln enthalten, um Locators wie Datumsangaben.MonthLocator
zu verrotten.
[^ 2]: Ungefähr 10 * 365 * 24 * 60 (Stundenbestellung).
Wenn Sie es ohne Argumente ausführen, ist es ein anständiges Bild, aber einmal (einmal), wenn Sie es mit Intervall = 4 usw. ausführen, werden das Raster und das xticklabel durcheinander gebracht.
Um dies zu vermeiden, subtrahieren Sie eine große Anzahl von Zeitstempeln entsprechend und zeichnen Sie von dort ein Raster usw. [^ 3].
[^ 3]: 10 * 365 * 24 (tägliche Bestellung)
memo
fig.subplots_adjust ()
aus.
--Plots mit "Pandas" können die Bildbreite ohne Erlaubnis ändern. Machen Sie es sich daher zur Gewohnheit, diese explizit anzupassen.Recommended Posts