Ich möchte eine Grafik zeichnen! Die ersten beiden Dinge, die mir in den Sinn kamen, waren R und Python. Ich habe in der Vergangenheit R verwendet, also habe ich diesmal versucht, Python zu verwenden. Im Fall von Python wurde geschrieben, dass es den Anschein hat, dass Diagramme mit matplotlib gezeichnet werden können. Deshalb habe ich zuerst versucht, herauszufinden, ob die Umgebung mit dem bekannten apt-get verbessert werden kann.
Versuchen Sie, unter Ubuntu 12 nach Matplotlib zu suchen.
python
$ apt-cache search matplotlib
python-matplotlib - Python based plotting system in a style similar to Matlab
python-matplotlib-data - Python based plotting system (data package)
python-matplotlib-dbg - Python based plotting system (debug extension)
python-matplotlib-doc - Python based plotting system (documentation package)
python-mpltoolkits.basemap - matplotlib toolkit to plot on map projections
python-mpltoolkits.basemap-data - matplotlib toolkit to plot on map projections (data package)
python-mpltoolkits.basemap-doc - matplotlib toolkit to plot on map projections (documentation)
python-scitools - Python library for scientific computing
python-wxmpl - Painless matplotlib embedding in wxPython
python-mpmath - library for arbitrary-precision floating-point arithmetic
python-mpmath-doc - library for arbitrary-precision floating-point arithmetic - Documentation
Soweit das Ergebnis ersichtlich ist, scheint Matplotlib im Fall von Ubuntu 12 nur in Python2 bereitgestellt zu werden. Es scheint, dass Python3 auch für Ubuntu14 verfügbar ist ...
Installieren Sie python-matplotlib
. Die unter Ubuntu 12 installierte Version von Python2 ist übrigens "2.7.3".
$ sudo apt-get install python-matplotlib
Ich habe es reibungslos installiert und daher das folgende Beispiel in Pyplot-Tutorial erhalten ...
pyplot_simple.py
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
Ich werde es versuchen.
$ python pyplot_simple.py
Traceback (most recent call last):
File "pyplot_simple.py", line 3, in <module>
import matplotlib.pyplot as plt
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 95, in <module>
new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/usr/lib/pymodules/python2.7/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 8, in <module>
import Tkinter as Tk, FileDialog
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
raise ImportError, str(msg) + ', please install the python-tk package'
ImportError: No module named _tkinter, please install the python-tk package
Es sieht aus wie ein Fehler. Als ich die Nachricht las, installierte ich python-tk
. Da so etwas steht, installieren Sie es.
$ sudo apt-get install python-tk
Versuchen Sie es erneut.
Es wurde angezeigt! Ich dachte, ich würde es schwerer haben, aber es war reibungsloser als ich erwartet hatte. Dank der Vorbereitung des Pakets.
Versuchen Sie date_demo.py, was etwas kompliziert aussieht. Die Quelle ist wie folgt.
date_demo.py
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.cbook as cbook
years = mdates.YearLocator() # every year
months = mdates.MonthLocator() # every month
yearsFmt = mdates.DateFormatter('%Y')
# load a numpy record array from yahoo csv data with fields date,
# open, close, volume, adj_close from the mpl-data/example directory.
# The record array stores python datetime.date as an object array in
# the date column
datafile = cbook.get_sample_data('goog.npy')
try:
# Python3 cannot load python2 .npy files with datetime(object) arrays
# unless the encoding is set to bytes. Hovever this option was
# not added until numpy 1.10 so this example will only work with
# python 2 or with numpy 1.10 and later.
r = np.load(datafile, encoding='bytes').view(np.recarray)
except TypeError:
r = np.load(datafile).view(np.recarray)
fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)
# format the ticks
ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(yearsFmt)
ax.xaxis.set_minor_locator(months)
datemin = datetime.date(r.date.min().year, 1, 1)
datemax = datetime.date(r.date.max().year + 1, 1, 1)
ax.set_xlim(datemin, datemax)
# format the coords message box
def price(x):
return '$%1.2f' % x
ax.format_xdata = mdates.DateFormatter('%Y-%m-%d')
ax.format_ydata = price
ax.grid(True)
# rotates and right aligns the x labels, and moves the bottom of the
# axes up to make room for them
fig.autofmt_xdate()
plt.show()
Wenn ich es laufen lasse ...
$ python date_demo.py
Traceback (most recent call last):
File "t2.py", line 17, in <module>
datafile = cbook.get_sample_data('goog.npy')
File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 682, in get_sample_data
return open(f, 'rb')
IOError: [Errno 2] No such file or directory: "/etc/'/usr/share/matplotlib/sampledata'/goog.npy"
Es sieht aus wie ein Fehler. Es scheint sich auf den seltsamen Pfad "/ etc /" / usr / share / matplotlib / sampledata "/ goog.npy" zu beziehen. Ich frage mich, ob es irgendwo einen Ort gibt, an dem ich es einstellen kann ... Leider habe ich noch nicht so viel Wissen, deshalb werde ich vorerst nach goog.npy suchen.
$ find /usr -name "goog.npy"
/usr/share/matplotlib/sampledata/goog.npy
Ich habe es gefunden, also ändere es auf den vollständigen Pfad ...
@@ -12,7 +12,7 @@ yearsFmt = mdates.DateFormatter('%Y')
# open, close, volume, adj_close from the mpl-data/example directory.
# The record array stores python datetime.date as an object array in
# the date column
-datafile = cbook.get_sample_data('goog.npy')
+datafile = cbook.get_sample_data('/usr/share/matplotlib/sampledata/goog.npy')
try:
# Python3 cannot load python2 .npy files with datetime(object) arrays
# unless the encoding is set to bytes. Hovever this option was
Versuchen Sie es erneut.
$ python date_demo.py
Es wurde angezeigt! Obwohl ich das Diagramm einfacher zeichnen konnte als erwartet, war es diesmal ein Problem mit dem Pfad der Beispieldaten, aber ich war ein wenig besorgt, als ich dachte, dass andere Probleme auftreten könnten.
Recommended Posts