Dies ist der Grundcode (für mich), um Excel-Daten mit Matplot grafisch darzustellen. Normalerweise erweitere ich es basierend darauf.
Umgebung ・ Ubuntu 16.04 ・ Python3.5.2 ・ Matplotlib 2.0.0 ・ Pandas0.19.2, numpy1.11.3 ・ Inkscape (wird für die Konvertierung von EPS → EMK verwendet)
Ein Fall, in dem Diagrammdaten (X-Achse, Y-Achse) kopiert und oben links (A1-Zelle) der Excel-Tabelle verwendet werden. Es wird davon ausgegangen, dass die Daten der X- und Y-Achse, die Sie grafisch darstellen möchten, bereits vorhanden sind. ・ Ich möchte es in einen Bericht (Word) einfügen, bin aber mit dem Excel-Diagramm nicht zufrieden. ・ Ich bin mit der Indexnotation in Excel unzufrieden Nur in so kurzer Zeit vergesse ich die Plotmethode völlig.
Ich möchte die grafische Darstellung mit den Daten eines beliebigen Zellbereichs der vorhandenen Excel-Tabelle in [(2)] beschreiben (http://qiita.com/gitytm15/items/7e7a86e6b3e6bd03a8a3).
Das Ausgabediagramm wird als eps und png gespeichert. Die EMF-Datei ist praktisch, wenn Sie sie in ein Word-Dokument einfügen.
Inkscape ist über die Befehlszeile verfügbar. Verwenden Sie daher die Option -M
$ inkscape sample.eps -M sample.emf
Ich würde gerne sagen, aber es funktioniert nicht mit dem folgenden Fehler ...
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)
Ich werde diesen Bereich verschieben Ich muss eine EMF-Datei erstellen und sie in den Bericht aufnehmen. Es ist eine Methode, um inkscape zu öffnen und normal zu konvertieren.
(Hinzugefügt 2017.2.21) ↓ Ich habe die Lösung (mit Inkscape) hier geschrieben Matplotlib-Diagramm in EMF-Dateiformat konvertieren
-Öffnen Sie die EPS-Datei in Inkscape und wählen Sie EMF unter "Speichern unter".
Wenn Sie Japanisch für das Diagramm verwenden Zeichen werden verstümmelt, wenn das Importieren mit Poppler in [Importeinstellungen] nicht aktiviert ist. (Ich weiß nicht was Poppler ist ...)
Ich wünschte, ich könnte EMF direkt speichern, bin mir aber nicht sicher.
Nachtrag (2017.2.21) Laut Piyopiyo no Hibi wurde die Ausgabefunktion von emf gelöscht. Was ...
matplotlib-1.3.In 1 Dokument"Wechselpunkt"Es gab eine Erklärung.
Es wurde so geschrieben.
"Die EMK-Ausgabefunktion wurde aufgrund einer Bereinigung der Funktionen aus dieser Version entfernt."
Was ist das...
Die aktuelle Version von matplotlib ist 2.0.0, also nur für den Fall Ich habe es mit der folgenden Methode überprüft.
import matplotlib.pyplot as plt
fig = plt.figure()
print(fig.canvas.get_supported_filetypes())
Wenn Sie es nachschlagen
'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'
Dies scheint der ausgabefähige Dateityp in der aktuellen Umgebung zu sein.
graph.py
# coding: utf-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
#(C:\Windows\Fonts\Also hier ist der Code: Sie müssen lediglich die Daten der x- und y-Achse aus dem von Pandas gelesenen DataFrame der Excel-Datei (xls, xlsx) extrahieren und in den Plot werfen. Es gibt zwei Möglichkeiten zum Extrahieren, z. B. die Angabe nach Spalte oder nach Labelnamen. Geben Sie den Speicherort der Schriftartdatei ubuntu Any Font an)
fp = FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf")
####################################################################
filepath='~/Desktop/sample.xls' #Xls-Dateispeicherort
df=pd.read_excel(filepath) #Laden Sie in Pandas DataFrame
#Lesen Sie die Daten der x- und Y-Achse aus dem Datenrahmen
#Angegeben durch Spalte
x=df[[0]]
y=df[[1]]
#Bei Angabe nach Label
#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("Diagrammbeispiel",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_xlabel("x-Achse",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_ylabel("y-Achse",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")
#Datei speichern Als PNG und EPS speichern
plt.savefig("sample.png ")
plt.savefig("sample.eps")
plt.show()
Recommended Posts