2
2
3
3
{{ header }}
4
4
5
- .. ipython :: python
5
+ How do I create plots in pandas?
6
+ ----------------------------------
7
+
8
+ .. image :: ../../_static/schemas/04_plot_overview.svg
9
+ :align: center
10
+
11
+ .. ipython ::
6
12
7
- import pandas as pd
8
- import matplotlib.pyplot as plt
13
+ In [1]: import pandas as pd
14
+ ...: import matplotlib.pyplot as plt
9
15
10
16
.. raw :: html
11
17
20
26
21
27
.. include :: includes/air_quality_no2.rst
22
28
23
- .. ipython :: python
29
+ .. ipython ::
24
30
25
- air_quality = pd.read_csv(" data/air_quality_no2.csv" , index_col = 0 , parse_dates = True )
26
- air_quality.head()
31
+ In [1]: air_quality = pd.read_csv("data/air_quality_no2.csv", index_col=0, parse_dates=True)
32
+ ...: air_quality.head()
27
33
28
34
.. note ::
29
35
The usage of the ``index_col `` and ``parse_dates `` parameters of the ``read_csv `` function to define the first (0th) column as
35
41
</ul >
36
42
</div >
37
43
38
- How to create plots in pandas?
39
- ------------------------------
40
-
41
- .. image :: ../../_static/schemas/04_plot_overview.svg
42
- :align: center
43
-
44
44
.. raw :: html
45
45
46
46
<ul class =" task-bullet" >
47
47
<li >
48
48
49
49
I want a quick visual check of the data.
50
50
51
- .. ipython :: python
51
+ .. ipython ::
52
52
53
53
@savefig 04_airqual_quick.png
54
- air_quality.plot()
54
+ In [1]: air_quality.plot();
55
55
56
56
With a ``DataFrame ``, pandas creates by default one line plot for each of
57
57
the columns with numeric data.
@@ -69,9 +69,18 @@ the columns with numeric data.
69
69
I want to plot only the columns of the data table with the data from Paris.
70
70
71
71
.. ipython :: python
72
+ :suppress:
73
+
74
+ # We need to clear the figure here as, within doc generation, the plot
75
+ # accumulates data on each plot(). This is not needed when running
76
+ # in a notebook, so is suppressed from output.
77
+ plt.clf()
78
+
79
+ .. ipython ::
72
80
73
81
@savefig 04_airqual_paris.png
74
- air_quality[" station_paris" ].plot()
82
+ In [1]: air_quality["station_paris"].plot()
83
+ ...: plt.show()
75
84
76
85
To plot a specific column, use the selection method of the
77
86
:ref: `subset data tutorial <10min_tut_03_subset >` in combination with the :meth: `~DataFrame.plot `
@@ -90,11 +99,11 @@ method. Hence, the :meth:`~DataFrame.plot` method works on both ``Series`` and
90
99
91
100
I want to visually compare the :math: `N0 _2 ` values measured in London versus Paris.
92
101
93
- .. ipython :: python
102
+ .. ipython ::
94
103
95
104
@savefig 04_airqual_scatter.png
96
- air_quality.plot.scatter(x = " station_london" , y = " station_paris" , alpha = 0.5 )
97
-
105
+ In [1]: air_quality.plot.scatter(x="station_london", y="station_paris", alpha=0.5)
106
+ ...: plt.show()
98
107
.. raw :: html
99
108
100
109
</li >
@@ -121,10 +130,11 @@ One of the options is :meth:`DataFrame.plot.box`, which refers to a
121
130
`boxplot <https://en.wikipedia.org/wiki/Box_plot >`__. The ``box ``
122
131
method is applicable on the air quality example data:
123
132
124
- .. ipython :: python
133
+ .. ipython ::
125
134
126
135
@savefig 04_airqual_boxplot.png
127
- air_quality.plot.box()
136
+ In [1]: air_quality.plot.box()
137
+ ...: plt.show()
128
138
129
139
.. raw :: html
130
140
@@ -144,10 +154,11 @@ For an introduction to plots other than the default line plot, see the user guid
144
154
145
155
I want each of the columns in a separate subplot.
146
156
147
- .. ipython :: python
157
+ .. ipython ::
148
158
149
159
@savefig 04_airqual_area_subplot.png
150
- axs = air_quality.plot.area(figsize = (12 , 4 ), subplots = True )
160
+ In [1]: axs = air_quality.plot.area(figsize=(12, 4), subplots=True)
161
+ ...: plt.show()
151
162
152
163
Separate subplots for each of the data columns are supported by the ``subplots `` argument
153
164
of the ``plot `` functions. The builtin options available in each of the pandas plot
@@ -176,13 +187,13 @@ Some more formatting options are explained in the user guide section on :ref:`pl
176
187
177
188
I want to further customize, extend or save the resulting plot.
178
189
179
- .. ipython :: python
180
-
181
- fig, axs = plt.subplots(figsize = (12 , 4 ))
182
- air_quality.plot.area(ax = axs)
183
- @savefig 04_airqual_customized.png
184
- axs.set_ylabel( " NO$_2$ concentration " )
185
- fig.savefig( " no2_concentrations.png " )
190
+ .. ipython ::
191
+ @04_airqual_customized.png
192
+ In [1]: fig, axs = plt.subplots(figsize=(12, 4))
193
+ ...: air_quality.plot.area(ax=axs)
194
+ ...: axs.set_ylabel("NO$_2$ concentration")
195
+ ...: fig.savefig("no2_concentrations.png ")
196
+ ...: plt.show( )
186
197
187
198
.. ipython :: python
188
199
:suppress:
0 commit comments