C'est le code de base (pour moi) pour représenter graphiquement des données Excel avec matplot. Je l'élargis généralement comme je le souhaite sur cette base.
environnement ・ Ubuntu 16.04 ・ Python3.5.2 ・ Matplotlib 2.0.0 ・ Pandas0.19.2, numpy1.11.3 ・ Inkscape (utilisé pour la conversion eps → emf)
Cas où les données du graphique (axe X, axe Y) sont copiées et utilisées dans le coin supérieur gauche (cellule A1) de la feuille Excel. On suppose que les données de l'axe X et de l'axe Y que vous souhaitez représenter graphiquement existent déjà. ・ Je souhaite le coller dans un rapport (Word), mais je ne suis pas satisfait du graphique Excel. ・ Je ne suis pas satisfait de la notation d'index dans Excel Ce n'est qu'en si peu de temps que j'oublie complètement la méthode de traçage.
Je voudrais décrire le graphique avec les données de n'importe quelle plage de cellules de la feuille Excel existante dans (2).
Le graphique de sortie est enregistré au format eps et png. Le fichier emf est pratique lorsque vous le collez dans un document Word, alors comment le faire.
Inkscape est disponible à partir de la ligne de commande, utilisez donc l'option -M
$ inkscape sample.eps -M sample.emf
Je voudrais dire, mais cela ne fonctionne pas avec l'erreur suivante ...
parser error : Start tag expected, '<' not found
%!PS-Adobe-3.0 EPSF-3.0
^
** (inkscape:5467): WARNING **: Specified document sample.eps cannot be opened (does not exist or not a valid SVG file)
Je mettrai cette zone hors tension Je dois créer un fichier emf et le mettre sur le rapport. C'est une méthode pour ouvrir inkscape et le convertir normalement.
(Ajouté 2017.2.21) ↓ J'ai écrit la solution (en utilisant Inkscape) ici Convertir le graphe matplotlib au format de fichier emf
-Ouvrez le fichier eps dans Inkscape et sélectionnez emf dans "Enregistrer sous".
Si vous utilisez le japonais pour le graphique Les caractères sont déformés si Importer avec Poppler dans [Paramètres d'importation] n'est pas coché. (Je ne sais pas ce qu'est Poppler ...)
J'aimerais pouvoir enregistrer emf directement, mais je ne suis pas sûr.
Post-scriptum (2017.2.21) Selon Piyopiyo no Hibi, la fonction de sortie de emf a été supprimée. Quelle ...
matplotlib-1.3.Dans 1 document"point de changement"Il y avait une explication.
C'était écrit comme ça.
"La fonctionnalité de sortie emf a été supprimée de cette version en raison d'un nettoyage des fonctionnalités."
Qu'est-ce que c'est...
La version actuelle de matplotlib est 2.0.0, donc juste au cas où Je l'ai vérifié par la méthode ci-dessous.
import matplotlib.pyplot as plt
fig = plt.figure()
print(fig.canvas.get_supported_filetypes())
Si vous cherchez dans
'pdf': 'Portable Document Format',
'ps': 'Postscript',
'rgba': 'Raw RGBA bitmap',
'pgf': 'PGF code for LaTeX',
'svgz': 'Scalable Vector Graphics',
'svg': 'Scalable Vector Graphics',
'raw': 'Raw RGBA bitmap',
'eps': 'Encapsulated Postscript',
'png': 'Portable Network Graphics'
Cela semble être le type de fichier pouvant être généré dans l'environnement actuel.
Alors voici le code: À partir du DataFrame du fichier Excel (xls, xlsx) lu par les pandas Tout ce que vous avez à faire est d'extraire les données de l'axe des x et de l'axe des y et de les jeter dans le tracé.
Il existe deux façons d'extraire, comme la spécification par colonne ou par nom d'étiquette.
graph.py
# coding: utf-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
#Spécifiez l'emplacement du fichier de police ubuntu(C:\Windows\Fonts\Toute police)
fp = FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf")
####################################################################
filepath='~/Desktop/sample.xls' #Emplacement du fichier xls
df=pd.read_excel(filepath) #Charger dans Pandas DataFrame
#Lire les données des axes X et Y à partir du bloc de données
#Spécifié par colonne
x=df[[0]]
y=df[[1]]
#Lors de la spécification par étiquette
#x=df['X']
#y=df['Y']
####################################################################
#Graph
####################################################################
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yscale('linear')
#ax1.set_yscale('log')
ax1.set_ylim(-1.1, 1.1)
ax1.set_xlim(0,360)
ax1.set_title("Exemple de graphique",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_xlabel("axe x",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_ylabel("axe y",fontdict = {"fontproperties": fp},fontsize=12)
#ax1.plot(x, y,'red',label='sin')
ax1.scatter(x, y,s=1,c='r',label='sin')
ax1.legend(loc="upper right")
#Enregistrer le fichier Enregistrer au format png et eps
plt.savefig("sample.png ")
plt.savefig("sample.eps")
plt.show()
Recommended Posts