Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΈ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ Π² Jupyter Notebook ΠΈΠ»ΠΈ QT ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΡΠ΄Π°Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
# Create some data to plot
df = pd.DataFrame(
dict(Feature1=[10, 20, 30, 20, 10], Feature2=[3, 2, 3, 2, 3]),
index=['a', 'b', 'c', 'd', 'e']
)
_ = df.plot(kind='bar', legend=False, y='Feature1', yerr='Feature2', rot=0)
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΡΡΠ°ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Axes
(ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΆΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Ρ Ρ
ΠΎΡΡ), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ:
fig = plt.figure(0)
ax = fig.add_subplot(111)
_ = df.plot(kind='bar', legend=False, y='Feature1', yerr='Feature2', rot=0, axes=ax)
ΠΠΎΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°:
Traceback (most recent call last):
File "<stdin>", line 12, in <module>
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 3740, in __call__
sort_columns=sort_columns, **kwds)
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 2614, in plot_frame
**kwds)
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 2441, in _plot
plot_obj.generate()
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 1028, in generate
self._make_plot()
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 1971, in _make_plot
log=self.log, **kwds)
File "/usr/local/miniconda3/lib/python3.5/site-packages/pandas/tools/plotting.py", line 1918, in _plot
return ax.bar(x, y, w, bottom=start, log=log, **kwds)
File "/usr/local/miniconda3/lib/python3.5/site-packages/matplotlib/__init__.py", line 1812, in inner
return func(ax, *args, **kwargs)
File "/usr/local/miniconda3/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 2134, in bar
self.add_patch(r)
File "/usr/local/miniconda3/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 1780, in add_patch
self._set_artist_props(p)
File "/usr/local/miniconda3/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 865, in _set_artist_props
a.axes = self
File "/usr/local/miniconda3/lib/python3.5/site-packages/matplotlib/artist.py", line 237, in axes
raise ValueError("Can not reset the axes. You are "
ValueError: Can not reset the axes. You are probably trying to re-use an artist in more than one Axes which is not supported
Π― ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π³ΡΠ°ΡΠΈΠΊΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
pd.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.4.6-gentoo
machine: x86_64
processor: Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz
byteorder: little
LC_ALL: None
LANG: en_US.utf8
pandas: 0.18.1
nose: 1.3.7
pip: 8.1.2
setuptools: 25.1.6
Cython: None
numpy: 1.11.1
scipy: 0.18.0
statsmodels: 0.6.1
xarray: None
IPython: 5.1.0
sphinx: 1.4.1
patsy: 0.4.1
dateutil: 2.5.3
pytz: 2016.6.1
blosc: None
bottleneck: None
tables: 3.2.3.1
numexpr: 2.6.1
matplotlib: 1.5.1
openpyxl: None
xlrd: 1.0.0
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: 2.6.1 (dt dec pq3 ext)
jinja2: 2.8
boto: None
pandas_datareader: None
(FWIW, Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ±ΡΠ°Π» ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ pandas ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
pandas: 0.18.1+391.g6645b2b
)
ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ax=ax
, Π° Π½Π΅ axes
.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ **kwargs
Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
.plot
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΈΡ
Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ matplotlib (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .ax.bar
). Π― Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΠ΅ΠΌΡ matplotlib axes.bar
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ axes
, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ pylab?
Π― ΡΠ΅ΠΉΡΠ°Ρ Π·Π°ΠΊΡΠΎΡ ΡΡΠΎ; ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΈΠ½ΡΡΡ axes
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° Π΄Π»Ρ ax
(Π½Π΅ Π·Π½Π°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ax
), Π½ΠΎ Ρ Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΏΠΎΠ±Π΅Π³ΡΡ Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π² ΡΡΠΎ.
ΠΠΎΠ΄ΡΠ². Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ax=ax
, Π° Π½Π΅axes
.Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ
**kwargs
Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ.plot
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ matplotlib (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,.ax.bar
). Π― Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½, ΠΏΠΎΡΠ΅ΠΌΡ matplotlibaxes.bar
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎaxes
, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ pylab?