1
- # Activity 3: Multiple Plot Types using Subplots
1
+ # Activity 2: Bar plot
2
2
3
- # import Items_Sold_by_Week.csv
4
- import pandas as pd
5
- Items_by_Week = pd .read_csv ('Items_Sold_by_Week.csv' )
6
-
7
- # For scatterplot
8
- # import Height_by_Weight.csv
9
- import pandas as pd
10
- Weight_by_Height = pd .read_csv ('Weight_by_Height.csv' )
11
-
12
- # For histogram and Box-and-Whisker
13
- # Create an array of 100 normally distributed numbers
14
- import numpy as np
15
- y = np .random .normal (loc = 0 , scale = 0.1 , size = 100 ) # 100 numbers with mean of 0 and standard deviation of 0.1
16
-
17
- # generate figure with 6 subplots organized in 3 rows and 2 columns that do not overlap
18
- import matplotlib .pyplot as plt
19
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
20
- plt .tight_layout () # prevent plot overlap
21
-
22
- # Name the titles
23
- import matplotlib .pyplot as plt
24
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
25
- # line plot (top left)
26
- axes [0 ,0 ].set_title ('Line' )
27
- # Bar plot (top right)
28
- axes [0 ,1 ].set_title ('Bar' )
29
- # Horizontal bar plot (middle left)
30
- axes [1 ,0 ].set_title ('Horizontal Bar' )
31
- # Histogram (middle right)
32
- axes [1 ,1 ].set_title ('Histogram' )
33
- # Scatterplot (bottom left)
34
- axes [2 ,0 ].set_title ('Scatter' )
35
- # Box-and-Whisker
36
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
37
- plt .tight_layout () # prevent plot overlap
3
+ # Create a list for x
4
+ x = ['Boston Celtics' ,'Los Angeles Lakers' , 'Chicago Bulls' , 'Golden State Warriors' , 'San Antonio Spurs' ]
5
+ print (x )
38
6
39
- # in the ‘Line’, ‘Bar’, and ‘Horizontal Bar’ axes, plot ‘Items_Sold’ by ‘Week’ from the ‘Items_by_Week’
40
- # Horizontal bar
41
- import matplotlib .pyplot as plt
42
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
43
- # line plot (top left)
44
- axes [0 ,0 ].plot (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for line plot
45
- axes [0 ,0 ].set_title ('Line' )
46
- # Bar plot (top right)
47
- axes [0 ,1 ].bar (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for bar plot
48
- axes [0 ,1 ].set_title ('Bar' )
49
- # Horizontal bar plot (middle left)
50
- axes [1 ,0 ].barh (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for horizontal bar plot
51
- axes [1 ,0 ].set_title ('Horizontal Bar' )
52
- # Histogram (middle right)
53
- axes [1 ,1 ].set_title ('Histogram' )
54
- # Scatterplot (bottom left)
55
- axes [2 ,0 ].set_title ('Scatter' )
56
- # Box-and-Whisker
57
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
58
- plt .tight_layout () # prevent plot overlap
59
-
60
- # in the 'Histogram' and 'Box-and-Whisker axes, plot ‘Items_Sold’ by ‘Week’ from the ‘Items_by_Week’
61
- # Horizontal bar
62
- import matplotlib .pyplot as plt
63
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
64
- # line plot (top left)
65
- axes [0 ,0 ].plot (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for line plot
66
- axes [0 ,0 ].set_title ('Line' )
67
- # Bar plot (top right)
68
- axes [0 ,1 ].bar (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for bar plot
69
- axes [0 ,1 ].set_title ('Bar' )
70
- # Horizontal bar plot (middle left)
71
- axes [1 ,0 ].barh (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for horizontal bar plot
72
- axes [1 ,0 ].set_title ('Horizontal Bar' )
73
- # Histogram (middle right)
74
- axes [1 ,1 ].hist (y , bins = 20 )
75
- axes [1 ,1 ].set_title ('Histogram' )
76
- # Scatterplot (bottom left)
77
- axes [2 ,1 ].boxplot (y )
78
- axes [2 ,0 ].set_title ('Scatter' )
79
- # Box-and-Whisker
80
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
81
- plt .tight_layout () # prevent plot overlap
82
-
83
- # add scatterplot
84
- import matplotlib .pyplot as plt
85
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
86
- # line plot (top left)
87
- axes [0 ,0 ].plot (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for line plot
88
- axes [0 ,0 ].set_title ('Line' )
89
- # Bar plot (top right)
90
- axes [0 ,1 ].bar (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for bar plot
91
- axes [0 ,1 ].set_title ('Bar' )
92
- # Horizontal bar plot (middle left)
93
- axes [1 ,0 ].barh (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for horizontal bar plot
94
- axes [1 ,0 ].set_title ('Horizontal Bar' )
95
- # Histogram (middle right)
96
- axes [1 ,1 ].hist (y , bins = 20 ) # for histogram
97
- axes [1 ,1 ].set_title ('Histogram' )
98
- # Scatterplot (bottom left)
99
- axes [2 ,0 ].scatter (Weight_by_Height ['Height' ], Weight_by_Height ['Weight' ]) # for scatterplot
100
- axes [2 ,0 ].set_title ('Scatter' )
101
- # Box-and-Whisker
102
- axes [2 ,1 ].boxplot (y ) # for Box-and-Whisker
103
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
104
- plt .tight_layout () # prevent plot overlap
105
-
106
- # Set x- and y-axis for each subplot
107
- import matplotlib .pyplot as plt
108
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 )
109
- # line plot (top left)
110
- axes [0 ,0 ].plot (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for line plot
111
- axes [0 ,0 ].set_xlabel ('Week' )
112
- axes [0 ,0 ].set_ylabel ('Items Sold' )
113
- axes [0 ,0 ].set_title ('Line' )
114
- # Bar plot (top right)
115
- axes [0 ,1 ].bar (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for bar plot
116
- axes [0 ,1 ].set_xlabel ('Week' )
117
- axes [0 ,1 ].set_ylabel ('Items Sold' )
118
- axes [0 ,1 ].set_title ('Bar' )
119
- # Horizontal bar plot (middle left)
120
- axes [1 ,0 ].barh (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for horizontal bar plot
121
- axes [1 ,0 ].set_xlabel ('Items Sold' )
122
- axes [1 ,0 ].set_ylabel ('Week' )
123
- axes [1 ,0 ].set_title ('Horizontal Bar' )
124
- # Histogram (middle right)
125
- axes [1 ,1 ].hist (y , bins = 20 ) # for histogram
126
- axes [1 ,1 ].set_xlabel ('y' )
127
- axes [1 ,1 ].set_ylabel ('Frequency' )
128
- axes [1 ,1 ].set_title ('Histogram' )
129
- # Scatterplot (bottom left)
130
- axes [2 ,0 ].scatter (Weight_by_Height ['Height' ], Weight_by_Height ['Weight' ]) # for scatterplot
131
- axes [2 ,0 ].set_xlabel ('Height' )
132
- axes [2 ,0 ].set_ylabel ('Weight' )
133
- axes [2 ,0 ].set_title ('Scatter' )
134
- # Box-and-Whisker
135
- axes [2 ,1 ].boxplot (y ) # for Box-and-Whisker
136
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
137
- plt .tight_layout () # prevent plot overlap
7
+ # Create a list for y
8
+ y = [17 , 16 , 6 , 6 , 5 ]
9
+ print (y )
138
10
139
- # Enlarge the figure size and Save the figure
11
+ # Put into a data frame so we can sort them
12
+ import pandas as pd
13
+ df = pd .DataFrame ({'Team' : x ,
14
+ 'Titles' : y })
15
+
16
+ # Sort df by titles
17
+ df_sorted = df .sort_values (by = ('Titles' ), ascending = False )
18
+
19
+ # Make a programmatic title
20
+ team_with_most_titles = df_sorted ['Team' ][0 ] # get team with most titles
21
+ most_titles = df_sorted ['Titles' ][0 ] # get the number of max titles
22
+ title = 'The {} have the most titles with {}' .format (team_with_most_titles , most_titles ) # create title
23
+ print (title )
24
+
25
+ # Plot it
26
+ import matplotlib .pyplot as plt # import matplotlib
27
+ plt .bar (df_sorted ['Team' ], df_sorted ['Titles' ], color = 'red' ) # plot titles by team and make bars red
28
+ plt .xlabel ('Team' ) # create x label
29
+ plt .ylabel ('Number of Championships' ) # create y label
30
+ plt .xticks (rotation = 45 ) # rotate x tick labels 45 degrees
31
+ plt .title (title ) # title
32
+ plt .savefig ('Titles_by_Team' ) # save figure to present working directory
33
+ plt .show () # print plot
34
+
35
+ # Fix the cropping
140
36
import matplotlib .pyplot as plt
141
- fig , axes = plt .subplots (nrows = 3 , ncols = 2 , figsize = (8 ,8 )) # for figure size
142
- # line plot (top left)
143
- axes [0 ,0 ].plot (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for line plot
144
- axes [0 ,0 ].set_xlabel ('Week' )
145
- axes [0 ,0 ].set_ylabel ('Items Sold' )
146
- axes [0 ,0 ].set_title ('Line' )
147
- # Bar plot (top right)
148
- axes [0 ,1 ].bar (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for bar plot
149
- axes [0 ,1 ].set_xlabel ('Week' )
150
- axes [0 ,1 ].set_ylabel ('Items Sold' )
151
- axes [0 ,1 ].set_title ('Bar' )
152
- # Horizontal bar plot (middle left)
153
- axes [1 ,0 ].barh (Items_by_Week ['Week' ], Items_by_Week ['Items_Sold' ]) # for horizontal bar plot
154
- axes [1 ,0 ].set_xlabel ('Items Sold' )
155
- axes [1 ,0 ].set_ylabel ('Week' )
156
- axes [1 ,0 ].set_title ('Horizontal Bar' )
157
- # Histogram (middle right)
158
- axes [1 ,1 ].hist (y , bins = 20 ) # for histogram
159
- axes [1 ,1 ].set_xlabel ('y' )
160
- axes [1 ,1 ].set_ylabel ('Frequency' )
161
- axes [1 ,1 ].set_title ('Histogram' )
162
- # Scatterplot (bottom left)
163
- axes [2 ,0 ].scatter (Weight_by_Height ['Height' ], Weight_by_Height ['Weight' ]) # for scatterplot
164
- axes [2 ,0 ].set_xlabel ('Height' )
165
- axes [2 ,0 ].set_ylabel ('Weight' )
166
- axes [2 ,0 ].set_title ('Scatter' )
167
- # Box-and-Whisker
168
- axes [2 ,1 ].boxplot (y ) # for Box-and-Whisker
169
- axes [2 ,1 ].set_title ('Box-and-Whisker' )
170
- plt .tight_layout () # prevent plot overlap
171
- fig .savefig ('Six_Subplots' ) # save figure
37
+ plt .bar (df_sorted ['Team' ], df_sorted ['Titles' ], color = 'red' )
38
+ plt .xlabel ('Team' )
39
+ plt .ylabel ('Number of Championships' )
40
+ plt .xticks (rotation = 45 )
41
+ plt .title (title )
42
+ plt .savefig ('Titles_by_Team' , bbox_inches = 'tight' ) # fix the cropping issue
43
+ plt .show ()
0 commit comments