Vous pouvez dessiner des graphiques qui peuvent être dessinés dans Excel avec python.
Un package appelé matplotlib fournit cette fonction.
La signification du dessin est-elle ce qui peut être dessiné dans Excel dans le langage de script principalement pour l'automatisation?
Il peut être utilisé pour des applications telles que l'acquisition périodique de données mises à jour quotidiennement, leur représentation graphique et l'automatisation de l'envoi de l'image par e-mail.
Voici, à titre d'exemple, [Données nationales sur la transition des frais de scolarité des universités privées publiées par le ministère de l'Éducation, de la Culture, des Sports, des Sciences et de la Technologie](http://www.mext.go.jp/b_menu/shingi/kokuritu/005/gijiroku/06052921/005/ 002.htm) est utilisé.
Enregistrez-le en tant que fichier data.csv comme indiqué ci-dessous. (Il a été correctement formaté, par exemple en remplaçant les blancs par vim)
année,Frais de scolarité (yens),Frais d'admission (yens),Frais d'examen (yens),Frais de scolarité (yens),Frais d'admission (yens),Frais d'examen (yens),Frais de scolarité (double),Frais d'admission (double),Frais d'examen (double)
1975,36000,50000,5000,182677,95584,9647,5.1,1.9,1.9
1976,96000,50000,7500,221844,121888,11452,2.3,2.4,1.5
1977,96000,60000,7500,248066,135205,13084,2.6,2.3,1.7
1978,144000,60000,10000,286568,157019,14722,2,2.6,1.5
...
La partie des données réelles de chaque frais de scolarité nationaux et privés est lue par python, répertoriée, ajustée comme le paramètre d'étiquette et le paramètre d'affichage des précédents, et enfin écrite dans graph.png.
from matplotlib import pyplot
with open("data.csv", "r", encoding="shift-jis") as fp:
x, xlabels = [], []
y1, y2 = [], []
for linenum, line in enumerate(fp):
if linenum is 0:
continue
x.append(linenum)
xlabels.append(line.split(",")[0])
y1.append(line.split(",")[1])
y2.append(line.split(",")[4])
#paramètre d'étiquette de l'axe x
pyplot.xticks(x, xlabels, rotation=90)
#Espace d'affichage des étiquettes de l'axe X étendu
pyplot.subplots_adjust(bottom=0.2)
#Dessiner avec du cyan uni
pyplot.plot(x, y1, 'c-', label="Université nationale")
#Dessiner avec une ligne continue de magenda
pyplot.plot(x, y2, 'm-', label="Université privée")
# grid, title,Affichage de la légende
pyplot.title("Modifications des frais de scolarité, etc. dans les universités nationales et privées")
pyplot.legend()
pyplot.grid()
#pyplot.show()
pyplot.savefig("graph.png ")
Le résultat est illustré dans la figure ci-dessous.
Le soi-disant tofu ... C'est parce que matplotlib n'a pas de polices japonaises.
Ce sont des informations un peu anciennes et python2, mais [Comment définir Helvetica comme police sans-serif par défaut dans Matplotlib](http://blog.olgabotvinnik.com/blog/2012/11/15/2012-11-15- How-to-set-helvetica-as-the-default-sans-serif-font-in /) explique comment ajouter une police. [^ 1]
Vous pouvez extraire une police qui prend en charge le japonais du système, mais je n'ai pas trouvé la police ttf sur mon Mac, donc police IPA /download.html#en).
Décompressez le fichier zip téléchargé et copiez-le comme suit. Veuillez noter que la destination de la copie dépend de l'environnement.
$ cp ~/Downloads/IPAfont00303/*.ttf /usr/local/lib/python3.4/site-packages/matplotlib/mpl-data/fonts/ttf/
Copiez le fichier de configuration sous Accueil et modifiez-le.
$ cp /usr/local/lib/python3.4/site-packages/matplotlib/mpl-data/matplotlibrc ~/.matplotlib/
$ vi ~/.matplotlib/matplotlibrc
Définissez le nom de la police dans font.family.
Veuillez noter que vous ne spécifiez pas le nom du fichier de police ici.
ʻOpen ipa.ttf`, vérifiez le nom de la police que vous souhaitez utiliser, puis définissez-le.
matplotlibrc
# The font.size property is the default font size for text, given in pts.
# 12pt is the standard value.
#
font.family : IPAmincho
Supprimez les données mises en cache.
$ rm ~/.matplotlib/fontList.py3k.cache
Maintenant, la prochaine fois que vous ferez ʻimport matplotlib`, les données du cache seront automatiquement générées et vous pourrez les afficher en japonais.
Si vous réexécutez le script python, vous pouvez voir que le tofu a été éliminé comme indiqué ci-dessous.
[^ 1]: la police standard matplotlib n'est pas belle! Et en colère
Recommended Posts