Je veux dessiner un graphique! Les deux premières choses qui me sont venues à l'esprit étaient R et Python. J'ai utilisé R dans le passé, donc cette fois j'ai essayé d'utiliser Python. Dans le cas de Python, il a été écrit qu'il semble que les graphiques puissent être dessinés à l'aide de matplotlib, alors j'ai d'abord essayé de voir si l'environnement pouvait être amélioré avec le familier apt-get.
Essayez de rechercher matplotlib sur Ubuntu 12 que vous avez.
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
Pour ce qui est du résultat, dans le cas d'Ubuntu 12, matplotlib semble être fourni uniquement en Python2. Il semble que Python3 soit également disponible pour Ubuntu14 ...
Installez python-matplotlib
. Au fait, la version de Python2 installée sur Ubuntu 12 est «2.7.3».
$ sudo apt-get install python-matplotlib
Je l'ai installé sans problème, j'ai donc obtenu l'exemple suivant dans Pyplot tutorial ...
pyplot_simple.py
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
Je vais essayer.
$ 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
Cela ressemble à une erreur. Quand j'ai lu le message, j'ai installé python-tk
. Puisqu'il dit quelque chose comme ça, installez-le.
$ sudo apt-get install python-tk
Essayez de l'exécuter à nouveau.
C'était affiché! Je pensais que j'aurais plus de mal, mais c'était plus fluide que ce à quoi je m'attendais. Merci à la préparation du colis.
Essayez date_demo.py, qui semble un peu compliqué. La source est la suivante.
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()
Quand je l'exécute ...
$ 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"
Cela ressemble à une erreur. Il semble faire référence au chemin étrange / etc / '/ usr / share / matplotlib / sampledata' / goog.npy
. Je me demande s'il y a un endroit pour le placer quelque part ... Malheureusement, je n'ai pas encore beaucoup de connaissances, donc je vais chercher goog.npy pour le moment.
$ find /usr -name "goog.npy"
/usr/share/matplotlib/sampledata/goog.npy
Je l'ai trouvé, alors changez-le en chemin complet ...
@@ -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
Essayez de l'exécuter à nouveau.
$ python date_demo.py
C'était affiché! Bien que j'aie pu dessiner le graphique plus facilement que prévu, cette fois, c'était un problème avec le chemin des données d'échantillon, mais j'étais un peu inquiet quand j'ai pensé que d'autres problèmes pourraient survenir.
Recommended Posts