test1.py
import sqlalchemy
import pandas as pd
import matplotlib.pyplot as plt
#SQLAlchemy-Initialisierung
CONNECT_INFO = 'mssql+pyodbc://hogehoge'
engine = sqlalchemy.create_engine(CONNECT_INFO, encoding='utf-8')
#Variable Einstellung
qq = 1
ym = 201607
#DB-Verbindung, gespeicherte Ausführung, Pandas-Datenrahmenerstellung
query = 'EXEC dbo.sp_rtrv_hogehoge @q = {0},@prd = {1}'.format(qq,ym )
df = pd.read_sql_query(query, engine ,index_col =['t'])
#Diagrammzeichnung
ax = df.plot( color=('b','r') , alpha=0.6 )
plt.title('hogehoge_title')
plt.grid(which='major')
#ax = plt.gca()
#Datei speichern
fname ='test'+ str(ym) +'.png'
plt.savefig(fname)
plt.close()
-Plot () von Pandas (df) ist eine Wrapper-Methode von plt.plot () von matplotlib
Führen Sie oben die gespeicherte Prozedur von SQLSevrer aus (in SQLServer in EXEC gespeichert ausführen) Gespeicherte Argumente (qq und ym) werden in der eingebetteten Notation der Python-Variablen angegeben.
Sie können das aktuell bearbeitete Diagramm mit "ax = plt.gca ()" abrufen
Oben wird keine Y-Achsenskala angewendet, so dass beispielsweise im Fall von 1 Million so wie sie ist als "1000000" geschrieben wird.
Y-Achsenskala ↓
test1.py
import sqlalchemy
import pandas as pd
import matplotlib.pyplot as plt
#(Unterlassung)
#Diagrammzeichnung
ax = df.plot( color=('b','r') , alpha=0.6 )
#ax = plt.gca()
ax.ticklabel_format(style="sci", axis="y",scilimits=(0,0))
Y-Achsenskala ↓
・ Es wurde eine Skala wie "Data Scientist" (lacht) Mit der Notation von le6 besteht jedoch die Gefahr, dass der Chef des literarischen Systems Osan, der in der Mechanik schwach ist, ein Segen (weiße Augen) wird, so dass der nächste ex3 fein abgestimmt wurde.
test1.py
import sqlalchemy
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
#(Unterlassung)
#Diagrammzeichnung
ax = df.plot( color=('b','r') , alpha=0.6 )
#ax = plt.gca()
ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
ax.ticklabel_format(style="sci", axis="y",scilimits=(0,0))
-Wenn Sie die Eigenschaft von ScalarFormatter auf useMathText = True
setzen, ist dies eine Potenznotation von 10.
・ Eine Million ist $ 1 × 10 ^ 6 $ (** 10 nach der 6. Potenz **, dh 6 Nullen)
Y-Achsenskala ↓
test4.py
import sqlalchemy
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
#Klasseneinstellungen * ScalarFormatter erben
class FixedOrderFormatter(ScalarFormatter):
def __init__(self, order_of_mag=0, useOffset=True, useMathText=True):
self._order_of_mag = order_of_mag
ScalarFormatter.__init__(self, useOffset=useOffset,
useMathText=useMathText)
def _set_orderOfMagnitude(self, range):
self.orderOfMagnitude = self._order_of_mag
#(Unterlassung)
#Diagrammzeichnung
ax = df.plot( color=('b','r') , alpha=0.6 )
#ax = plt.gca()
ax.yaxis.set_major_formatter(FixedOrderFormatter(4 ,useMathText=True))
#ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
ax.ticklabel_format(style="sci", axis="y",scilimits=(0,0))
・ Abhängig von den Daten möchten Sie möglicherweise 10.000 Einheiten ($ 1 x 10 ^ 4
Y-Achsenskala ↓
・ 10.000 ist $ 1 × 10 ^ 4 $ (** 10 nach der 4. Potenz **, dh 4 Nullen), also ist 1 Million $ 100 × 10 ^ 4 $
・ [Matplotlib] Ich möchte die Skalierung der Achse als Exponentialschreibweise verwenden (via.
Recommended Posts