├── Matplotlib绘图基础常用设置
├── Matplotlib绘图基础常用设置.html
├── Matplotlib绘图基础常用设置.ipynb
├── Matplotlib绘图基础常用设置.md
├── output_10_0.png
├── output_12_0.png
├── output_14_0.png
├── output_16_0.png
├── output_18_0.png
├── output_21_0.png
├── output_23_0.png
├── output_24_0.png
├── output_5_0.png
└── output_7_0.png
├── README.md
├── matplotlib可视化折线图
├── matplotlib可视化折线图.html
├── matplotlib可视化折线图.ipynb
├── matplotlib可视化折线图.md
├── output_10_0.png
├── output_11_0.png
├── output_3_0.png
├── output_5_0.png
├── output_7_0.png
└── output_8_0.png
├── matplotlib可视化散点图
├── matplotlib可视化散点图.html
├── matplotlib可视化散点图.ipynb
├── matplotlib可视化散点图.md
├── output_4_0.png
├── output_5_0.png
├── output_6_0.png
└── output_7_0.png
├── matplotlib可视化柱状图
├── matplotlib可视化柱状图.html
├── matplotlib可视化柱状图.ipynb
├── matplotlib可视化柱状图.md
├── output_11_0.png
├── output_13_0.png
├── output_15_0.png
├── output_18_0.png
├── output_20_0.png
├── output_22_0.png
├── output_24_0.png
├── output_29_0.png
├── output_35_0.png
├── output_5_0.png
├── output_7_0.png
└── output_9_0.png
├── matplotlib可视化直方图
├── matplotlib可视化直方图.html
├── matplotlib可视化直方图.ipynb
├── matplotlib可视化直方图.md
├── output_11_0.png
├── output_2_0.png
├── output_4_1.png
├── output_7_0.png
└── output_9_0.png
├── matplotlib可视化箱线图
├── matplotlib可视化箱线图.html
├── matplotlib可视化箱线图.ipynb
├── matplotlib可视化箱线图.md
├── output_10_0.png
├── output_11_0.png
├── output_12_0.png
├── output_2_0.png
├── output_5_0.png
├── output_7_0.png
└── output_9_0.png
├── matplotlib可视化饼图
├── matplotlib可视化饼图.html
├── matplotlib可视化饼图.ipynb
├── matplotlib可视化饼图.md
├── output_10_0.png
├── output_12_0.png
├── output_14_0.png
├── output_16_0.png
├── output_18_0.png
├── output_20_0.png
├── output_23_0.png
├── output_4_0.png
├── output_6_0.png
└── output_8_0.png
└── 样式美化matplotlib.pyplot.style.use定制画布风格
├── output_10_0.png
├── output_12_0.png
├── output_14_0.png
├── output_16_0.png
├── output_18_0.png
├── output_20_0.png
├── output_22_0.png
├── output_24_0.png
├── output_26_0.png
├── output_28_0.png
├── output_30_0.png
├── output_32_0.png
├── output_34_0.png
├── output_36_0.png
├── output_38_0.png
├── output_40_0.png
├── output_42_0.png
├── output_44_0.png
├── output_46_0.png
├── output_48_0.png
├── output_4_0.png
├── output_50_0.png
├── output_52_0.png
├── output_54_0.png
├── output_56_0.png
├── output_58_0.png
├── output_8_0.png
├── 样式美化matplotlib.pyplot.style.use定制画布风格.html
├── 样式美化matplotlib.pyplot.style.use定制画布风格.ipynb
└── 样式美化matplotlib.pyplot.style.use定制画布风格.md
/Matplotlib绘图基础常用设置/Matplotlib绘图基础常用设置.md:
--------------------------------------------------------------------------------
1 |
2 | # 导入必要的库
3 |
4 |
5 | ```python
6 | import matplotlib.pyplot as plt
7 | ```
8 |
9 | ### matplotlib是一个数据绘图库,可以将枯燥的数据转换成容易接收信息的图表
10 | #### 我们来了解下一幅matplotlib图像的组成结构
11 | + 第一层:canvas 类似画板
12 | + 第二层:figure 类似画布(或理解为画图区域)
13 | + 第三层:axes 子图(或理解为坐标系)
14 | + 第四层:各类图表信息,包括:xaxis(x轴),yaxis(y轴),title(标题),legend(图例),grid(网格线),spines(边框线),data(数据)等等
15 | #### 所以,
16 | + canvas位于最底层,当我们导入matplotlib库的时候就已经存在了,我们不需要多管这个
17 | + figure建立在canvas之上,从这里就需要我们开始操作了
18 | + axes建立在figure之上
19 | + 图形以及坐标轴、图例等信息都是建立在Axes之上
20 |
21 |
22 | ```python
23 | import matplotlib.pyplot as plt
24 | import numpy as np # 用来生成绘图数据
25 | ```
26 |
27 | + NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
28 |
29 |
30 | ```python
31 | x =['-x刻度1','x刻度2',-3,4,5,-6,'-x刻度7','-x刻度8',9,10]
32 | y = np.random.random(10)*20 #生成10个 0~20 之间的随机数
33 |
34 | #根据x和y画图
35 | plt.plot(x,y)
36 |
37 | # 显示图形
38 | plt.show()
39 | ```
40 |
41 |
42 | 
43 |
44 |
45 | ### x =['-x刻度1','x刻度2',-3,4,5,-6,'-x刻度7','-x刻度8',9,10]
46 | +这个列表里每个元素代表x轴的一个刻度
47 | ### y = np.random.random(10)*20
48 | + np.random.random(10) # 生成10个 0~20 之间的随机数
49 | + np.random.random(10)*20 # 生成10个 0~20 之间的随机数,然后乘以20,变成0~20之间的数
50 |
51 | ### x轴不能显示中文
52 |
53 |
54 |
55 | ```python
56 | # 正常显示中文标签,包括:xaxis(x轴),yaxis(y轴),title(标题),legend(图例)
57 | plt.rcParams['font.sans-serif']=['SimHei']
58 | #根据x和y画图
59 | plt.plot(x,y)
60 |
61 | # 显示图形
62 | plt.show()
63 | ```
64 |
65 |
66 | 
67 |
68 |
69 | ### plt.rcParams['font.sans-serif']=['Microsoft YaHei','SimHei']
70 | + 宋体,仿宋,新宋体,黑体,楷体。windows路径C:\Windows\Fonts ,选中右键属性可以查看英文名字,只能windows,其他系统没试过
71 |
72 | ### plt.rcParams['axes.unicode_minus']=False
73 | + 有时候x轴或者y轴刻度负号不能显示,默认参数plt.rcParams['axes.unicode_minus']=True
74 |
75 |
76 | ```python
77 | plt.rcParams['axes.labelsize']=20
78 | #根据x和y画图
79 | plt.plot(x,y)
80 |
81 | plt.xlabel('我是x轴')
82 | plt.ylabel('我是y轴')
83 |
84 | # 显示图形
85 | plt.show()
86 | ```
87 |
88 |
89 | 
90 |
91 |
92 | ### plt.rcParams['axes.labelsize']=20
93 | + 控制x和y轴的标签大小为20像素
94 |
95 |
96 | ```python
97 | plt.rcParams['xtick.labelsize']=12
98 | plt.rcParams['ytick.labelsize']=12
99 | #根据x和y画图
100 | plt.plot(x,y)
101 |
102 | # 显示图形
103 | plt.show()
104 | ```
105 |
106 |
107 | 
108 |
109 |
110 | ### plt.rcParams['xtick.labelsize']=12
111 | ### plt.rcParams['ytick.labelsize']=12
112 | + 控制x和y轴刻度大小
113 |
114 |
115 | ```python
116 | plt.rcParams['legend.fontsize']=14
117 | #根据x和y画图
118 | plt.plot(x,y,label='我是图例')
119 | #显示图例
120 | plt.legend()
121 | # 显示图形
122 | plt.show()
123 | ```
124 |
125 |
126 | 
127 |
128 |
129 | ### 在 plot 的时候指定 label,然后调用 legend 方法可以绘制图例。
130 | + 控制图例大小为14像素
131 |
132 |
133 | ```python
134 | plt.rcParams['lines.linewidth']=17.5
135 |
136 | #根据x和y画图
137 | plt.plot(x,y,label='我是图例')
138 | #显示图例
139 |
140 | # 显示图形
141 | plt.show()
142 | ```
143 |
144 |
145 | 
146 |
147 |
148 | ### 设置关键参数 lines.linewidth 可以改变线的粗细,其值为浮点数。
149 | + 控制线的粗细为17.5像素
150 |
151 |
152 | ```python
153 | plt.rcParams['figure.figsize']=[12,8]
154 | #根据x和y画图
155 | plt.plot(x,y,label='我是图例')
156 | #显示图例
157 |
158 | # 显示图形
159 | plt.show()
160 | ```
161 |
162 |
163 | 
164 |
165 |
166 | ### plt.rcParams['figure.figsize']=[12,8]
167 | + 把图设置为12*8 大小
168 |
169 | ## 倒入模块就设置全局参数
170 |
171 |
172 | ```python
173 | import matplotlib.pyplot as plt
174 | import numpy as np
175 | # 正常显示中文标签
176 | plt.rcParams['font.sans-serif']=['SimHei']
177 | # 用来正常显示负号
178 | plt.rcParams['axes.unicode_minus']=False
179 |
180 | # 刻度大小
181 | plt.rcParams['axes.labelsize']=16
182 | # 线的粗细
183 | plt.rcParams['lines.linewidth']=17.5
184 | # x轴标签大小
185 | plt.rcParams['xtick.labelsize']=14
186 | # y轴标签大小
187 | plt.rcParams['ytick.labelsize']=14
188 | #图例大小
189 | plt.rcParams['legend.fontsize']=14
190 | # 图大小
191 | plt.rcParams['figure.figsize']=[12,8]
192 |
193 | plt.xlabel('我是x轴')
194 | plt.ylabel('我是y轴')
195 | #设置绘图标题
196 | plt.title('Matplotlib绘图基础常用设置')
197 | #根据x和y画图
198 | plt.plot(x,y,label='我是图例')
199 | #显示图例
200 | plt.legend()
201 | # 显示图形
202 | plt.show()
203 | ```
204 |
205 |
206 | 
207 |
208 |
209 | ### 另一种参数设置
210 |
211 |
212 | ```python
213 | params={
214 | 'axes.labelsize': '16',
215 | 'xtick.labelsize':'14',
216 | 'ytick.labelsize':'14',
217 | 'lines.linewidth':17.5 ,
218 | 'legend.fontsize': '14',
219 | 'figure.figsize' : '12, 8'}
220 | plt.rcParams.update(params)
221 |
222 | plt.xlabel('我是x轴')
223 | plt.ylabel('我是y轴')
224 | #设置绘图标题
225 | plt.title('Matplotlib绘图基础常用设置')
226 | #根据x和y画图
227 | plt.plot(x,y,label='我是图例')
228 | #显示图例
229 | plt.legend()
230 | # 显示图形
231 | plt.show()
232 | ```
233 |
234 |
235 | 
236 |
237 |
238 |
239 | ```python
240 | plt.style.use("ggplot")
241 |
242 | plt.xlabel('我是x轴')
243 | plt.ylabel('我是y轴')
244 | #设置绘图标题
245 | plt.title('Matplotlib绘图基础常用设置')
246 | #根据x和y画图
247 | plt.plot(x,y,label='我是图例')
248 | #显示图例
249 | plt.legend()
250 | # 显示图形
251 | plt.show()
252 | ```
253 |
254 |
255 | 
256 |
257 |
258 | ## plt.style.use("ggplot")
259 | + 样式美化(matplotlib.pyplot.style.use),定制画布风格
260 |
261 |
262 | ```python
263 | # 获取所有的自带样式
264 | print(plt.style.available)
265 | ```
266 |
267 | ['bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark-palette', 'seaborn-dark', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'seaborn', 'Solarize_Light2', 'tableau-colorblind10', '_classic_test']
268 |
269 |
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_10_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_10_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_12_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_12_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_14_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_14_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_16_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_16_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_18_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_18_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_21_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_21_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_23_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_23_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_24_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_24_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_5_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_5_0.png
--------------------------------------------------------------------------------
/Matplotlib绘图基础常用设置/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/Matplotlib绘图基础常用设置/output_7_0.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Matplotlib
2 | matplotlib 绘图可视化知识点
3 | ## 目录
4 | 可以在 Notebook 中打开 Matplotlib绘图基础常用设置.ipynb ,或者直接打开 Matplotlib绘图基础常用设置.html
5 |
6 | - [01. **Matplotlib绘图基础常用设置**](Matplotlib绘图基础常用设置/Matplotlib绘图基础常用设置.md)
7 | - [02. **matplotlib可视化折线图**](matplotlib可视化折线图/matplotlib可视化折线图.md)
8 | - [03. **样式美化matplotlib.pyplot.style.use定制画布风格**](样式美化matplotlib.pyplot.style.use定制画布风格/样式美化matplotlib.pyplot.style.use定制画布风格.md)
9 | - [04. **matplotlib可视化柱状图**](matplotlib可视化柱状图/matplotlib可视化柱状图.md)
10 | - [05. **matplotlib可视化直方图**](matplotlib可视化直方图/matplotlib可视化直方图.md)
11 | - [06. **matplotlib可视化散点图**](matplotlib可视化散点图/matplotlib可视化散点图.md)
12 | - [07. **matplotlib可视化饼图**](matplotlib可视化饼图/matplotlib可视化饼图.md)
13 | - [08. **matplotlib可视化箱线图**](matplotlib可视化箱线图/matplotlib可视化箱线图.md)
14 |
--------------------------------------------------------------------------------
/matplotlib可视化折线图/matplotlib可视化折线图.md:
--------------------------------------------------------------------------------
1 |
2 | # 导入必要的库
3 |
4 |
5 | ```python
6 | import numpy as np
7 | import matplotlib.pyplot as plt
8 | ```
9 |
10 |
11 | ```python
12 | # 用来正常显示负号
13 | plt.rcParams['axes.unicode_minus']=False
14 |
15 | # 刻度大小
16 | plt.rcParams['axes.labelsize']=16
17 | # 线的粗细
18 | plt.rcParams['lines.linewidth']=2
19 | # x轴标签大小
20 | plt.rcParams['xtick.labelsize']=14
21 | # y轴标签大小
22 | plt.rcParams['ytick.labelsize']=14
23 | #图例大小
24 | plt.rcParams['legend.fontsize']=14
25 | # 图大小
26 | plt.rcParams['figure.figsize']=[12,8]
27 | ```
28 |
29 |
30 | ```python
31 | # 生成-5~5 的10个数 array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4])
32 | x = np.arange(-5,5)
33 | y = [10,13,5,40,30,60,70,12,55,25]
34 |
35 | # 正常显示中文字体
36 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
37 |
38 | # 绘图,设置(label)图例名字为'第一条线',显示图例plt.legend()
39 | plt.plot(x,y,label='第一条线')
40 |
41 | # x轴标签
42 | plt.xlabel('横坐标')
43 | # y轴标签
44 | plt.ylabel('纵坐标')
45 |
46 | # 可视化图标题
47 | plt.title('这是一个折线图')
48 |
49 | # 显示图例
50 | plt.legend()
51 | # 显示图形
52 | plt.show()
53 | ```
54 |
55 |
56 | 
57 |
58 |
59 | ## 图例
60 |
61 | 在 plot 的时候指定 label,然后调用 legend 方法可以绘制图例。例如:plt.legend()
62 |
63 | legend 方法可接受一个 loc 关键字参数来设定图例的位置,可取值为数字或字符串:
64 | + 0: 'best' (自适应方式)
65 | + 1: 'upper right'
66 | + 2: 'upper left'
67 | + 3: 'lower left'
68 | + 4: 'lower right'
69 | + 5: 'right'
70 | + 6: 'center left'
71 | + 7: 'center right'
72 | + 8: 'lower center'
73 | + 9: 'upper center'
74 | + 10: 'center'
75 |
76 | loc 设置显示的位置,0是自适应
77 | ncol 设置显示的列数
78 | plt.legend(loc = 0, ncol = 2)
79 |
80 |
81 | ```python
82 | # 生成-5~5 的10个数 array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4])
83 | x=np.arange(-5,5)
84 | y=[10,13,5,40,30,60,70,12,55,25]
85 |
86 | # 正常显示中文字体
87 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
88 |
89 | # 绘图,设置(label)图例名字为'第一条线',显示图例plt.legend()
90 | plt.plot(x,y,label='第一条线')
91 |
92 | # x轴标签
93 | plt.xlabel('横坐标')
94 | # y轴标签
95 | plt.ylabel('纵坐标')
96 |
97 | # 修改x坐标刻度让它显示为array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4])
98 | plt.xticks(x)
99 |
100 | # 可视化图标题
101 | plt.title('这是一个折线图')
102 |
103 | # 显示图例
104 | plt.legend()
105 | # 显示图形
106 | plt.show()
107 | ```
108 |
109 |
110 | 
111 |
112 |
113 | # 画多条折线
114 |
115 |
116 | ```python
117 | # 第一组数据
118 | x1=np.arange(0,10)
119 | y1=[10,13,5,40,30,60,70,12,55,25]
120 |
121 | # 第二组数据
122 | x2=np.arange(0,10)
123 | y2=[25,2,12,30,20,40,50,30,40,15]
124 |
125 | # 第n组数据,有多少组数据,就可以画多条折线
126 | # x = np.arange(0,10)
127 | # y = [25,2,12,30,20,40,50,30,40,15]
128 |
129 |
130 | # 画第一条折线
131 | plt.plot(x1,y1,label='第一条线')
132 |
133 | # 画第二条折线
134 | plt.plot(x2,y2,label='第二条线')
135 |
136 | # 画第n条折线
137 | # plt.plot(x,y,label='第n条线')
138 |
139 | # x轴标签
140 | plt.xlabel('横坐标')
141 | # y轴标签
142 | plt.ylabel('纵坐标')
143 |
144 | # 可视化图标题
145 | plt.title('这是多条数据折线图')
146 |
147 | # 显示图例
148 | plt.legend()
149 | # 显示图形
150 | plt.show()
151 | ```
152 |
153 |
154 | 
155 |
156 |
157 |
158 | ```python
159 | # 第一组数据
160 | x1=np.arange(0,10)
161 | y1=[10,13,5,40,30,60,70,12,55,25]
162 |
163 | # 第二组数据
164 | x2=np.arange(0,10)
165 | y2=[25,2,12,30,20,40,50,30,40,15]
166 |
167 | plt.plot(x1,y1,label='第一条线',color='r',linewidth=3,marker='o',mfc='w',markersize=12,mfcalt='b')
168 | plt.plot(x2,y2,label='第二条线',linewidth=2)
169 |
170 |
171 | # x轴标签
172 | plt.xlabel('横坐标')
173 | # y轴标签
174 | plt.ylabel('纵坐标')
175 |
176 | # 可视化图标题
177 | plt.title('这是多条数据折线图')
178 |
179 | # 显示图例
180 | plt.legend()
181 | # 显示图形
182 | plt.show()
183 | ```
184 |
185 |
186 | 
187 |
188 |
189 | ### 线的样式
190 |
191 | #### (1)颜色
192 |
193 | plot 方法的关键字参数 color(或c) 用来设置线的颜色。可取值为:
194 |
195 | * 颜色名称或简写
196 | >* 'b' blue(蓝色)
197 | >* 'g' green(绿色)
198 | >* 'r' red(红色)
199 | >* 'c' cyan(青色)
200 | >* 'm' magenta(品红)
201 | >* 'y' yellow(黄色)
202 | >* 'k' black(黑色)
203 | >* 'w' white(白色)
204 | >* rgb
205 | * (r, g, b) 或 (r, g, b, a),其中 r g b a 取均为[0, 1]之间
206 | * [0, 1]之间的浮点数的字符串形式,表示灰度值。0表示黑色,1表示白色
207 |
208 | #### (2)样式
209 |
210 | plot 方法的关键字参数 linestyle(或ls) 用来设置线的样式。可取值为:
211 |
212 | * '-', 'solid'
213 | * '--', 'dashed'
214 | * '-.', 'dashdot'
215 | * ':', 'dotted'
216 | * '', ' ', 'None'
217 | #### (3)粗细
218 |
219 | 设置 plot 方法的关键字参数 linewidth(或lw) 可以改变线的粗细,其值为浮点数。
220 |
221 | ### marker
222 |
223 | 以下关键字参数可以用来设置marker的样式:
224 |
225 | * marker 标记类型
226 | * markeredgecolor 或 mec 标记边界颜色
227 | * markeredgewidth 或 mew 标记宽度
228 | * markerfacecolor 或 mfc 标记填充色
229 | * markersize 或 ms 标记大小
230 |
231 | #### 其中 marker 可取值为:
232 |
233 | * '-' 实线
234 | * '--' 虚线
235 | * '-.' 点与线
236 | * ':' 点
237 | * '.' 点标记
238 | * ',' 像素标记
239 | * 'o' 圆圈标记
240 | * 'v' 倒三角标记
241 | * '^' 正三角标记
242 | * '<' 左三角标记
243 | * '>' 右三角标记
244 | * '1' 向下Y标记
245 | * '2' 向上Y标记
246 | * '3' 向左Y标记
247 | * '4' 向右Y标记
248 | * 's' 正方形标记
249 | * 'p' 五角星标记
250 | * '*' *标记
251 | * 'h' 六边形1 标记
252 | * 'H' 六边形2 标记
253 | * '+' +标记
254 | * 'x' x标记
255 | * 'D' 钻石标记
256 | * 'd' 薄砖石标记
257 | * '|' 垂直线标记
258 | * '_' 水平线标记
259 |
260 |
261 | ```python
262 | # 第一组数据
263 | x1=np.arange(0,10)
264 | y1=[10,13,5,40,30,60,70,12,55,25]
265 |
266 |
267 | # 画一条红色的折线
268 | plt.plot(x1,y1,label='第一条线',color='r')
269 |
270 | # plot 方法的关键字参数 color(或c) 用来设置线的颜色。可取值为:
271 | # 'b' blue(蓝色)
272 | # 'g' green(绿色)
273 | # 'r' red(红色)
274 | # 'c' cyan(青色)
275 | # 'm' magenta(品红)
276 | # 'y' yellow(黄色)
277 | # 'k' black(黑色)
278 | # 'w' white(白色)
279 | # rgb
280 |
281 |
282 |
283 | # x轴标签
284 | plt.xlabel('横坐标')
285 | # y轴标签
286 | plt.ylabel('纵坐标')
287 |
288 | # 可视化图标题
289 | plt.title('这是折线图')
290 |
291 | # 显示图例
292 | plt.legend()
293 | # 显示图形
294 | plt.show()
295 | ```
296 |
297 |
298 | 
299 |
300 |
301 |
302 | ```python
303 | # 第一组数据
304 | x1=np.arange(0,10)
305 | y1=[10,13,5,40,30,60,70,12,55,25]
306 |
307 |
308 | # 画一条折线
309 | plt.plot(x1,y1,label='第一条线',marker='p',mfc='orange',ms=20,alpha=0.7,mec='c')
310 |
311 | # marker='p' 标记为五边形
312 | # mfc='orange' 标记为黄色
313 | # ms=20 标记大小为20
314 | # mec='c' 标记边框颜色为 'c' cyan(青色)
315 | # alpha=0.7 透明度为0.7
316 |
317 |
318 | # x轴标签
319 | plt.xlabel('横坐标')
320 | # y轴标签
321 | plt.ylabel('纵坐标')
322 |
323 | # 可视化图标题
324 | plt.title('这是折线图')
325 |
326 | # 显示图例
327 | plt.legend()
328 | # 显示图形
329 | plt.show()
330 | ```
331 |
332 |
333 | 
334 |
335 |
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_10_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_10_0.png
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_11_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_11_0.png
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_3_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_3_0.png
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_5_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_5_0.png
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_7_0.png
--------------------------------------------------------------------------------
/matplotlib可视化折线图/output_8_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化折线图/output_8_0.png
--------------------------------------------------------------------------------
/matplotlib可视化散点图/matplotlib可视化散点图.md:
--------------------------------------------------------------------------------
1 |
2 | # 概念
3 |
4 | 什么是散点图?
5 | 反映两组变量每个数据点的值,并且从散点图可以看出它们之间的相关性
6 |
7 | ## 参数介绍
8 | plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None)
9 |
10 | + x,y 形如shape(n,)的数组,可选值
11 | + s 代表点的大小
12 | + c 代表点的填充颜色,点的颜色或颜色序列,默认蓝色。其它如c = 'r' (red); c = 'g' (green); c = 'k' (black) ; c = 'y'(yellow)
13 | + marker 点的形状,可选值,默认是圆
14 | > * '-' 实线
15 | > * '--' 虚线
16 | > * '-.' 点与线
17 | > * ':' 点
18 | > * '.' 点标记
19 | > * ',' 像素标记
20 | > * 'o' 圆圈标记
21 | > * 'v' 倒三角标记
22 | > * '^' 正三角标记
23 | > * '<' 左三角标记
24 | > * '>' 右三角标记
25 | > * '1' 向下Y标记
26 | > * '2' 向上Y标记
27 | > * '3' 向左Y标记
28 | > * '4' 向右Y标记
29 | > * 's' 正方形标记
30 | > * 'p' 五角星标记
31 | > * '*' *标记
32 | > * 'h' 六边形1 标记
33 | > * 'H' 六边形2 标记
34 | > * '+' +标记
35 | > * 'x' x标记
36 | > * 'D' 钻石标记
37 | > * 'd' 薄砖石标记
38 | > * '|' 垂直线标记
39 | > * '_' 水平线标记
40 | + alpha:标量,可选,默认值:无, 0(透明)和1(不透明)之间的alpha混合值
41 | + edgecolors 点的边界颜色或颜色序列,可选值,默认值:None
42 |
43 |
44 | ```python
45 | import numpy as np
46 | import matplotlib.pyplot as plt
47 | ```
48 |
49 |
50 | ```python
51 | # 正常显示中文标签
52 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
53 | # 设置图大小8*5
54 | plt.rcParams['figure.figsize']=[8,5]
55 |
56 | # 设置字体大小
57 | plt.rcParams['font.size']=16
58 |
59 | # x轴标签大小
60 | plt.rcParams['xtick.labelsize']=16
61 | # y轴标签大小
62 | plt.rcParams['ytick.labelsize']=16
63 | ```
64 |
65 |
66 | ```python
67 | # 身高数据(厘米)
68 | height = [140,161,170,182,175,173,165,155,150,120]
69 | # 体重数据(公斤)
70 | weight = [38,50,58,80,70,69,55,45,40,30]
71 | # 散点图
72 | plt.scatter(height,weight,s=300,alpha=0.5)
73 |
74 | plt.title('身高体重比例图')
75 | plt.xlabel('身高数据(厘米)')
76 | plt.ylabel('体重数据(公斤)')
77 | plt.show()
78 | ```
79 |
80 |
81 | 
82 |
83 |
84 |
85 | ```python
86 | n = 258
87 | x = np.random.normal(0,1,n)
88 | y = np.random.normal(0,1,n)
89 | t = np.arctan2(y,x) # 颜色值 atan2() 返回给定的 X 及 Y 坐标值的反正切值。
90 |
91 | # s=75 大小 ,c=t 颜色数量
92 | plt.scatter(x,y,s=100,c=t,alpha=0.75)
93 |
94 | plt.show()
95 | ```
96 |
97 |
98 | 
99 |
100 |
101 |
102 | ```python
103 | N = 1000
104 | x = np.random.randn(N) # 生成符合正态分布的 1000 个数据
105 | y = np.random.randn(N)
106 | # 点的边界颜色白色,大小500,marker 正方形标记,点的边界 2 (白边),透明度0.8
107 | plt.scatter(x, y,alpha=0.8,edgecolors= 'w',s=500,marker='s', linewidths=2)
108 | plt.show()
109 | ```
110 |
111 |
112 | 
113 |
114 |
115 |
116 | ```python
117 | # 身高数据(厘米)
118 | height = [140,161,170,182,175,173,165,155,150,120]
119 | # 体重数据(公斤)
120 | weight = [38,50,58,80,70,69,55,45,40,30]
121 | # 散点图
122 | plt.scatter(height,weight,s=500,c='y',alpha=0.5,edgecolors= 'r')
123 |
124 | plt.title('身高体重比例图')
125 | plt.xlabel('身高数据(厘米)')
126 | plt.ylabel('体重数据(公斤)')
127 | plt.show()
128 | ```
129 |
130 |
131 | 
132 |
133 |
--------------------------------------------------------------------------------
/matplotlib可视化散点图/output_4_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化散点图/output_4_0.png
--------------------------------------------------------------------------------
/matplotlib可视化散点图/output_5_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化散点图/output_5_0.png
--------------------------------------------------------------------------------
/matplotlib可视化散点图/output_6_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化散点图/output_6_0.png
--------------------------------------------------------------------------------
/matplotlib可视化散点图/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化散点图/output_7_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/matplotlib可视化柱状图.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ```python
4 | import matplotlib.pyplot as plt
5 | ```
6 |
7 | # 柱状图
8 | >应用于比较分类变量的数值,例如可以用于展示衣服裤子鞋子等商品的销售量。
9 |
10 | ## 主要参数介绍:
11 | bar(left, height, width=0.8, bottom=None, **kwargs)
12 | 1. left为和分类数量一致的数值序列,序列里的数值数量决定了柱子的个数,数值大小决定了距离0点的位置
13 | 2. height为分类变量的数值大小,决定了柱子的高度
14 | 3. width决定了柱子的宽度,仅代表形状宽度而已
15 | 4. bottom决定了柱子距离x轴的高度,默认为None,即表示与x轴距离为0
16 |
17 | 事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小。默认情况下,left为柱体的居中位置(可以通过align参数来改变left值的含义)
18 |
19 |
20 | ```python
21 | # 正常显示中文标签
22 | plt.rcParams['font.sans-serif']=['SimHei']
23 | # 用来正常显示负号
24 | plt.rcParams['axes.unicode_minus']=False
25 |
26 | plt.rcParams['axes.labelsize']=16
27 | plt.rcParams['xtick.labelsize']=14
28 | plt.rcParams['ytick.labelsize']=14
29 | plt.rcParams['legend.fontsize']=12
30 | plt.rcParams['figure.figsize']=[16,6]
31 | # 使用样式
32 | plt.style.use("ggplot")
33 | ```
34 |
35 |
36 | ```python
37 | label = ["a","b","c","d","e"]
38 | x = [0,1,2,3,4]
39 | y = [30,20,15,25,10]
40 | ```
41 |
42 | ## width决定了柱子的宽度,仅代表形状宽度而已,默认为0.8
43 |
44 |
45 | ```python
46 | fig = plt.figure()
47 |
48 | # 生成第一个子图在1行2列第一列位置
49 | ax1 = fig.add_subplot(121)
50 |
51 | # 生成第二子图在1行2列第二列位置
52 | ax2 = fig.add_subplot(122)
53 |
54 | # 绘图并设置柱子宽度0.5
55 | ax1.bar(x, y, width=0.5)
56 |
57 | # 绘图默认柱子宽度0.8
58 | ax2.bar(x, y)
59 |
60 | plt.show()
61 | ```
62 |
63 |
64 | 
65 |
66 |
67 | ## 设置x轴刻度(tick_label)用 label = ["a","b","c","d","e"] 显示
68 |
69 |
70 | ```python
71 | fig = plt.figure()
72 |
73 | # 生成第一个子图在1行2列第一列位置
74 | ax1 = fig.add_subplot(121)
75 |
76 | # 生成第二子图在1行2列第二列位置
77 | ax2 = fig.add_subplot(122)
78 |
79 | # 绘图并设置柱子宽度0.5
80 | ax1.bar(x, y, width=0.5)
81 |
82 | # 绘图默认柱子宽度0.8,设置x轴刻度(tick_label)用 label = ["a","b","c","d","e"] 显示
83 | ax2.bar(x, y,tick_label=label)
84 |
85 | plt.show()
86 | ```
87 |
88 |
89 | 
90 |
91 |
92 | ## bottom决定了柱子距离x轴的高度,默认为None,即表示与x轴距离为0
93 |
94 |
95 | ```python
96 | fig,ax = plt.subplots(figsize=(8,5),dpi=80)
97 |
98 | # 设置第一个柱子离x轴 为5 ,第二、三、五个柱子不变,第四个柱子离x轴 为8
99 | ax.bar(x,y,width=0.3,bottom=[5,0,0,8,0])
100 |
101 | plt.show()
102 | ```
103 |
104 |
105 | 
106 |
107 |
108 | ## 设置柱体颜色
109 | 通过 facecolor(或fc) 关键字参数可以设置柱体颜色
110 |
111 | 通过 color 关键字参数 可以一次性设置多个颜色
112 |
113 |
114 | ```python
115 | fig = plt.figure()
116 |
117 | # 生成第一个子图在1行2列第一列位置
118 | ax1 = fig.add_subplot(121)
119 |
120 | # 生成第二子图在1行2列第二列位置
121 | ax2 = fig.add_subplot(122)
122 |
123 | ax1.bar(x, y, fc='c')
124 |
125 | ax2.bar(x, y,color=['r', 'g', 'b']) # 或者color='rgb' , color='#FFE4C4'
126 |
127 | plt.show()
128 | ```
129 |
130 |
131 | 
132 |
133 |
134 | ## 设置柱体描边
135 |
136 | 相关的关键字参数为:
137 |
138 | + edgecolor 或 ec 描边颜色
139 | + linestyle 或 ls 描边样式
140 | + linewidth 或 lw 描边宽度
141 |
142 |
143 | ```python
144 | # edgecolor 或 ec 描边颜色为(cyan),linestyle 或 ls 描边样式 (-.), linewidth 或 lw 描边宽度(5),柱子颜色(#EECFA1)
145 | plt.bar(x, y, ec='c', ls='-.', lw=5,color='#EECFA1')
146 | plt.show()
147 | ```
148 |
149 |
150 | 
151 |
152 |
153 | ## 设置柱体描边填充
154 | hatch 关键字可用来设置填充样式,可取值为: / , \ , | , - , + , x , o , O , . , * 。
155 |
156 |
157 | ```python
158 | plt.bar(x, y, ec='c', ls='-.', lw=5,color='#EEDC82',hatch='*')
159 | plt.show()
160 | ```
161 |
162 |
163 | 
164 |
165 |
166 | ## 其他柱状图类型
167 |
168 | ### (1)堆积柱状图
169 |
170 | 通过 bottom 参数,可以绘制堆叠柱状图。
171 |
172 |
173 | ```python
174 | #显示中文字体为SimHei
175 | plt.rcParams["font.sans-serif"]=["SimHei"]
176 |
177 | sale8 = [10,20,30,15,18]
178 | sale9 = [10,12,24,32,8]
179 |
180 | # x轴的刻度为1-5号衣服
181 | labels = ["{}号衣服".format(i) for i in range(1,6)]
182 |
183 | fig,ax = plt.subplots(figsize=(12,6),dpi=80)
184 |
185 |
186 | ax.bar(range(len(sale8)),sale8,tick_label=labels,label="8月")
187 |
188 | # 九月的bottom是sale8,也就是八月,所以九月在上边
189 | ax.bar(range(len(sale9)),sale9,bottom=sale8,tick_label=labels,label="9月")
190 | ax.legend()
191 | plt.show()
192 | ```
193 |
194 |
195 | 
196 |
197 |
198 | ## (2)并列柱状图
199 |
200 | 绘制并列柱状图与堆叠柱状图类似,都是绘制多组柱体,只需要控制好每组柱体的位置和大小即可。
201 |
202 |
203 | ```python
204 | import numpy as np
205 | #显示中文字体为SimHei
206 | plt.rcParams['font.sans-serif']=['SimHei']
207 |
208 | sale8 = [5,20,15,25,10]
209 | sale9 = [10,15,25,30,5]
210 |
211 | # x轴的刻度为1-5号衣服
212 | labels = ["{}号衣服".format(i) for i in range(1,6)]
213 |
214 | fig,ax = plt.subplots(figsize=(8,5),dpi=80)
215 | width_1 = 0.4
216 |
217 | ax.bar(np.arange(len(sale8)),sale8,width=width_1,tick_label=labels,label = "8月")
218 |
219 | ax.bar(np.arange(len(sale9))+width_1,sale9,width=width_1,tick_label=labels,label="9月")
220 |
221 | ax.legend()
222 | plt.show()
223 | ```
224 |
225 |
226 | 
227 |
228 |
229 | # 条形图
230 | 使用 barh 方法绘制条形图
231 |
232 | ### plt.barh 方法的签名为:
233 | >barh(bottom, width, height=0.8, left=None, **kwargs)
234 | ### 可以看到与 plt.bar 方法类似。所以堆积条形图和并列条形图的画法与前面类似。
235 |
236 |
237 | ```python
238 | plt.barh(x, y)
239 | plt.show()
240 | ```
241 |
242 |
243 | 
244 |
245 |
246 | ## 正负条形图
247 |
248 |
249 | ```python
250 | import numpy as np
251 | import matplotlib.pyplot as plt
252 |
253 | x = np.array([5, 20, 15, 25, 10])
254 | y = np.array([11, 15, 22, 14, 5])
255 |
256 | plt.barh(range(len(x)), x)
257 | plt.barh(range(len(y)), -y)
258 | plt.show()
259 | ```
260 |
261 |
262 | 
263 |
264 |
265 | #### 案例一:同一本书不同平台最低价比较
266 | 很多人在买一本书的时候,都比较喜欢货比三家,例如《python数据分析实战》在亚马逊、当当网、中国图书网、京东和天猫的最低价格分别为39.5、39.9、45.4、38.9、33.34。针对这个数据,我们也可以通过条形图来完成,这里使用水平条形图来显示:
267 |
268 |
269 | ```python
270 | import matplotlib.pyplot as plt
271 | import numpy as np
272 | ```
273 |
274 |
275 | ```python
276 | # 正常显示中文标签
277 | plt.rcParams['font.sans-serif']=['SimHei']
278 | # 用来正常显示负号
279 | plt.rcParams['axes.unicode_minus']=False
280 |
281 | plt.rcParams['axes.labelsize']=16
282 | plt.rcParams['xtick.labelsize']=14
283 | plt.rcParams['ytick.labelsize']=14
284 | plt.rcParams['legend.fontsize']=12
285 | plt.rcParams['figure.figsize']=[15,15]
286 | plt.style.use("ggplot")
287 | ```
288 |
289 |
290 | ```python
291 | price = [39.5,39.9,45.4,38.9,33.34]
292 | for x,y in enumerate(price):
293 | print(x,y)
294 | ```
295 |
296 | 0 39.5
297 | 1 39.9
298 | 2 45.4
299 | 3 38.9
300 | 4 33.34
301 |
302 |
303 |
304 | ```python
305 | fig,ax = plt.subplots(figsize=(12,5),dpi=80)
306 |
307 | x = range(len(price))
308 | # 添加刻度标签
309 | labels = np.array(['亚马逊','当当网','中国图书网','京东','天猫'])
310 | #在子图对象上画条形图,并添加x轴标签,图形的主标题
311 | ax.barh(x,price,tick_label=labels,alpha = 0.8)
312 |
313 | ax.set_xlabel('价格',color='k')
314 | ax.set_title('不同平台书的最低价比较')
315 |
316 | # 设置Y轴的刻度范围
317 | ax.set_xlim([32,47])
318 |
319 | # 为每个条形图添加数值标签
320 | for x,y in enumerate(price):
321 | ax.text(y+0.2,x,y,va='center',fontsize=14)
322 |
323 | # 显示图形
324 | plt.show()
325 | ```
326 |
327 |
328 | 
329 |
330 |
331 | ### 代码解读
332 | 水平条形图的绘制与垂直条形图的绘制步骤一致,只是调用了barh函数来完成。需要注意的是,条形图的数值标签设置有一些不一样,需要将标签垂直居中显示,使用va参数即可。
333 |
334 | #### 案例二:胡润财富榜:亿万资产超高净值家庭数
335 | 利用水平交错条形图对比2016年和2017年亿万资产超高净值家庭数(top5),其数据如下:
336 |
337 |
338 | ```python
339 | import matplotlib.pyplot as plt
340 | import numpy as np
341 | ```
342 |
343 |
344 | ```python
345 | # 正常显示中文标签
346 | plt.rcParams['font.sans-serif']=['SimHei']
347 | # 用来正常显示负号
348 | plt.rcParams['axes.unicode_minus']=False
349 |
350 | plt.rcParams['axes.labelsize']=16
351 | plt.rcParams['xtick.labelsize']=14
352 | plt.rcParams['ytick.labelsize']=14
353 | plt.rcParams['legend.fontsize']=16
354 | plt.rcParams['figure.figsize']=[12,10]
355 | plt.style.use("ggplot")
356 | ```
357 |
358 |
359 | ```python
360 | # 构建数据
361 | Y2016 = [15600,12700,11300,4270,3620]
362 | Y2017 = [17400,14800,12000,5200,4020]
363 | labels = ['北京','上海','香港','深圳','广州']
364 | bar_width = 0.35
365 | x = np.arange(len(Y2016))
366 | ```
367 |
368 |
369 | ```python
370 | fig = plt.figure()
371 | ax = fig.add_subplot(111)
372 |
373 | # 绘图
374 | ax.bar(x,Y2016,label='Y2016',width=bar_width)
375 | ax.bar(x+bar_width,Y2017,label='Y2017',width=bar_width)
376 | # 添加轴标签
377 | ax.set_xlabel('Top5城市')
378 | ax.set_ylabel('家庭数量')
379 | # 添加标题
380 | ax.set_title('亿万财富家庭数Top5城市分布',fontsize=16)
381 | # 添加刻度标签
382 | plt.xticks(x+bar_width,labels)
383 | # 设置Y轴的刻度范围
384 | plt.ylim([2500, 19000])
385 |
386 | # 为每个条形图添加数值标签
387 | for x2016,y2016 in enumerate(Y2016):
388 | plt.text(x2016, y2016+200, y2016,ha='center',fontsize=16)
389 |
390 | for x2017,y2017 in enumerate(Y2017):
391 | plt.text(x2017+0.35,y2017+200,y2017,ha='center',fontsize=16)
392 |
393 | # 显示图例
394 | ax.legend()
395 | # 显示图形
396 | plt.show()
397 | ```
398 |
399 |
400 | 
401 |
402 | ### 代码解读
403 | 水平交错条形图绘制的思想很简单,就是在第一个条形图绘制好的基础上,往左移一定的距离,再去绘制第二个条形图,所以在代码中会出现两个bar函数;
404 | 图例的绘制需要在bar函数中添加label参数;color和alpha参数分别代表条形图的填充色和透明度;
405 | 给条形图添加数值标签,同样需要使用两次for循环的方式实现;
406 |
407 |
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_11_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_11_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_13_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_13_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_15_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_15_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_18_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_18_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_20_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_20_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_22_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_22_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_24_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_24_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_29_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_29_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_35_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_35_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_5_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_5_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_7_0.png
--------------------------------------------------------------------------------
/matplotlib可视化柱状图/output_9_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化柱状图/output_9_0.png
--------------------------------------------------------------------------------
/matplotlib可视化直方图/matplotlib可视化直方图.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import matplotlib.pyplot as plt\n",
10 | "import numpy as np"
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {},
16 | "source": [
17 | "## 直方图参数\n",
18 | "\n",
19 | "plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None)\n",
20 | "\n",
21 | "* x:指定要绘制直方图的数据;输入值,这需要一个数组或者一个序列,不需要长度相同的数组。\n",
22 | "* bins:指定直方图条形的个数;\n",
23 | "* range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;\n",
24 | "* density:布尔,可选。如果\"True\",返回元组的第一个元素将会将计数标准化以形成一个概率密度,也就是说,直方图下的面积(或积分)总和为1。这是通过将计数除以数字的数量来实现的观察乘以箱子的宽度而不是除以总数数量的观察。如果叠加也是“真实”的,那么柱状图被规范化为1。(替代normed)\n",
25 | "* weights:该参数可为每一个数据点设置权重;\n",
26 | "* cumulative:是否需要计算累计频数或频率;\n",
27 | "* bottom:可以为直方图的每个条形添加基准线,默认为0;\n",
28 | "* histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;\n",
29 | "* align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;\n",
30 | "* orientation:设置直方图的摆放方向,默认为垂直方向;\n",
31 | "* rwidth:设置直方图条形宽度的百分比;\n",
32 | "* log:是否需要对绘图数据进行log变换;\n",
33 | "* color:设置直方图的填充色;\n",
34 | "* label:设置直方图的标签,可通过legend展示其图例;\n",
35 | "* stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;\n",
36 | "* normed:是否将直方图的频数转换成频率;(弃用,被density替代)\n",
37 | "* alpha:透明度,浮点数。\n",
38 | "\n",
39 | "## 返回值\n",
40 | "\n",
41 | "### n : 数组或数组列表\n",
42 | "\n",
43 | "直方图的值\n",
44 | "\n",
45 | "\n",
46 | "### bins : 数组\n",
47 | "\n",
48 | "返回各个bin的区间范围\n",
49 | "\n",
50 | "### patches : 列表的列表或列表\n",
51 | "\n",
52 | "返回每个bin里面包含的数据,是一个list\n"
53 | ]
54 | },
55 | {
56 | "cell_type": "code",
57 | "execution_count": 2,
58 | "metadata": {},
59 | "outputs": [
60 | {
61 | "data": {
62 | "image/png": "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\n",
63 | "text/plain": [
64 | ""
65 | ]
66 | },
67 | "metadata": {},
68 | "output_type": "display_data"
69 | }
70 | ],
71 | "source": [
72 | "plt.rcParams['font.family']='SimHei'\n",
73 | "plt.rcParams['font.size']=20\n",
74 | "\n",
75 | "# 直方图\n",
76 | "mu = 100\n",
77 | "sigma = 20\n",
78 | "x = np.random.normal(100,20,100) # 均值和标准差\n",
79 | "\n",
80 | "plt.hist(x,bins=20,color='red',histtype='stepfilled',alpha=0.75)\n",
81 | "plt.title('直方图数据分析与展示')\n",
82 | "plt.show()"
83 | ]
84 | },
85 | {
86 | "cell_type": "markdown",
87 | "metadata": {},
88 | "source": [
89 | "## 等距直方图"
90 | ]
91 | },
92 | {
93 | "cell_type": "code",
94 | "execution_count": 3,
95 | "metadata": {},
96 | "outputs": [
97 | {
98 | "name": "stdout",
99 | "output_type": "stream",
100 | "text": [
101 | "n 是分组区间对应的频率: [0.00087199 0.00152598 0.00610392 0.01286182 0.01678577 0.02681363\n",
102 | " 0.02463366 0.01264383 0.00479593 0.00196197]\n",
103 | "\n",
104 | "bins_limits 是分组时的分隔值: [ 50.03282244 59.2072611 68.38169976 77.55613842 86.73057707\n",
105 | " 95.90501573 105.07945439 114.25389305 123.42833171 132.60277037\n",
106 | " 141.77720903]\n",
107 | "\n",
108 | "patches 指的是是直方图中列表对象 \n",
109 | "\n",
110 | "0 Rectangle(xy=(50.0328, 0), width=9.17444, height=0.000871988, angle=0)\n",
111 | "1 Rectangle(xy=(59.2073, 0), width=9.17444, height=0.00152598, angle=0)\n",
112 | "2 Rectangle(xy=(68.3817, 0), width=9.17444, height=0.00610392, angle=0)\n",
113 | "3 Rectangle(xy=(77.5561, 0), width=9.17444, height=0.0128618, angle=0)\n",
114 | "4 Rectangle(xy=(86.7306, 0), width=9.17444, height=0.0167858, angle=0)\n",
115 | "5 Rectangle(xy=(95.905, 0), width=9.17444, height=0.0268136, angle=0)\n",
116 | "6 Rectangle(xy=(105.079, 0), width=9.17444, height=0.0246337, angle=0)\n",
117 | "7 Rectangle(xy=(114.254, 0), width=9.17444, height=0.0126438, angle=0)\n",
118 | "8 Rectangle(xy=(123.428, 0), width=9.17444, height=0.00479593, angle=0)\n",
119 | "9 Rectangle(xy=(132.603, 0), width=9.17444, height=0.00196197, angle=0)\n"
120 | ]
121 | },
122 | {
123 | "data": {
124 | "image/png": "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\n",
125 | "text/plain": [
126 | ""
127 | ]
128 | },
129 | "metadata": {},
130 | "output_type": "display_data"
131 | }
132 | ],
133 | "source": [
134 | "mu = 100 # 平均分布\n",
135 | "sigma = 15 # 标准偏差的分布\n",
136 | "x = mu + sigma * np.random.randn(500)\n",
137 | "\n",
138 | "# 指定分组个数\n",
139 | "num_bins = 10\n",
140 | "\n",
141 | "\n",
142 | "\n",
143 | "# 通过调用 as.hist 函数,来生成组数为 10 的直方图:\n",
144 | "\n",
145 | "fig, ax = plt.subplots()\n",
146 | "n, bins_limits, patches = ax.hist(x, num_bins, density=1)\n",
147 | "\n",
148 | "print(\"n 是分组区间对应的频率:\",n,end=\"\\n\\n\")\n",
149 | "print(\"bins_limits 是分组时的分隔值:\",bins_limits,end=\"\\n\\n\")\n",
150 | "print(\"patches 指的是是直方图中列表对象\",type(patches),end=\"\\n\\n\")\n",
151 | "\n",
152 | "for a,b in enumerate(patches):\n",
153 | " print(a,b) # 遍历取出patches列表的序列和值\n",
154 | "\n"
155 | ]
156 | },
157 | {
158 | "cell_type": "markdown",
159 | "metadata": {},
160 | "source": [
161 | "### xy:xy位置(x取值bins_limits 是分组时的分隔值,y取值都是0开始)\n",
162 | "### width :宽度为各个bin的区间范围(bins_limits 是分组时的分隔值)\n",
163 | "### height :高度也就是密度值(n 是分组区间对应的频率)\n",
164 | "### angle:角度"
165 | ]
166 | },
167 | {
168 | "cell_type": "markdown",
169 | "metadata": {},
170 | "source": [
171 | "## 添加分布曲线"
172 | ]
173 | },
174 | {
175 | "cell_type": "code",
176 | "execution_count": 4,
177 | "metadata": {},
178 | "outputs": [
179 | {
180 | "data": {
181 | "image/png": "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\n",
182 | "text/plain": [
183 | ""
184 | ]
185 | },
186 | "metadata": {},
187 | "output_type": "display_data"
188 | }
189 | ],
190 | "source": [
191 | "plt.rcParams['font.family']='SimHei'\n",
192 | "plt.rcParams['font.size']=20\n",
193 | "\n",
194 | "mu = 100\n",
195 | "sigma = 20\n",
196 | "x = np.random.normal(100,20,100) # 均值和标准差\n",
197 | "\n",
198 | "# 指定分组个数\n",
199 | "num_bins = 10\n",
200 | "\n",
201 | "\n",
202 | "fig, ax = plt.subplots()\n",
203 | "\n",
204 | "# 绘图并接受返回值\n",
205 | "n, bins_limits, patches = ax.hist(x, num_bins, density=1)\n",
206 | "\n",
207 | "\n",
208 | "# 添加分布曲线\n",
209 | "ax.plot(bins_limits[:10],n,'--')\n",
210 | "\n",
211 | "\n",
212 | "plt.title('直方图数据添加分布曲线')\n",
213 | "plt.show()"
214 | ]
215 | },
216 | {
217 | "cell_type": "markdown",
218 | "metadata": {},
219 | "source": [
220 | "## 不等距分组\n",
221 | "上面的直方图都是等距的,但有时我们需要得到不等距的直方图,这个时候只需要确定分组上下限,并指定 histtype=\"bar\" 就可以"
222 | ]
223 | },
224 | {
225 | "cell_type": "code",
226 | "execution_count": 5,
227 | "metadata": {},
228 | "outputs": [
229 | {
230 | "data": {
231 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEXCAYAAAB/HzlmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X28VVW97/HPF1TwCU3d2BElpOTmA5bJNV9gPnQqTKsjWpZW1/J0MLNb3bxlZilYUplkqfls6rHodOqYV9GLjyWnfEiUQk+nTEVUQMAIjwqCD7/zxxhLFou195pz7zX3hr2/79drvhZ7zrHGHHsxmV/mHGOOpYjAzMysCoP6ugFmZtZ/OWTMzKwyDhkzM6uMQ8bMzCrjkDEzs8o4ZMw6IWlzSerrdphtzBwyZp07G5gv6Z+6KiTpPZL+XdLkXmpXW0ka3M33bdnutlj/s0lfN8CsOyQtA14E1gAvA9194GsTYHPgzIi4pK7+HYBP5H3cWLdewOD8ntURsQY4GTgAuKpg2/cFOguuNRHxOUkTgI+3qGowMBSYFRE/KbDfU4FLImJ53bppwHGS3hIRzxRpf525kh4CvhoRfyr5XhsgHDK2sdqOFDCr89IsZAYBHfnPSzqppxYyQxrWnwFslZeFndw1myRpOfCe/PNZks6q2z4416uI2Lpu/RuAE4AFwIq69aPz7/E5YFQu81/Aqi7aPhR4spPtr5H0HmAa8GlJb4yIl+s270QKylNb1VNX317AbsA2wDMN24YUrOvRiLim6D5tIxURXrz0ywX4NOmkfV3J9x0CvALcBbwZeH+u54H8817A/ySFwp+B54BDgYOBE3PZu4GJwAeAIxvqf18u85GG9bOAZfnPH8xlPtGmz+K2XN9nG9ZvTwq6VcCYEvVNyfX9Yyfba8Hf1VLq78XLxrm4T8b6JUnbAGeSwuJrJd43FvgZ8BLwqYj4U0TcADwG7ANsGxEPRcR9wDHAG4FvRsSsiPh1RFxECp79gEURcX1EXNuwmzVdNKG27ZWibS7wO70b+HvSldOl9dsi4q+kK5yhwD9L2rRAfYOB44E/0fktwueBBRGhxgXYNZdZ3Z3fxzYuDhnrr6aRbpVdGREPlXjfRNItslMj4o91668jnaTfJGmYpMeBDwNvBaY31HEl6d/WOZ3s46Uu9l+7jdWWSQUlbQ5ckH/8eqQ+pEbnAv8BvD3/uZXDgV1I4fqKpCGSrpU0uq7My528t54nThwA3Cdj/Y6kd5JuWwHcX+a9EXGOpJ8DT0rajnQbaTXpBH1yrn8TUr/KU40BJmkQ8EtSX8ovO9lNV6O52v0fv2nAGNKtvh83KxARL0n6JPAb4CRJSyLiG13U+VXgEeBf8s8HAZOAAySNjojncYBY5pCxfiWPCrsSUMP6LUm3v37Qqo6IWCBpKPDXhjoai+4sqauT6U87WV8bZHC+pG/Xrd+RdJup3hGSRnWxj0siYnGzDZLeQRpE8DIwOSI6bWtE3Cfps6TbaWdK2hH4Qqw7QABJHyJd8XwyImq39I7Pr1/MAWP2GoeM9Rv5CuPnwEhSH0r97ZtLgI9K2h34TES82qK6l0l9OStJt7cab/9cBCwHTmtYP5j072pL0vDnZp4AvpP/vCXwWeC3pCuDxn6Kf8hLZ34GrBcyknYmhdwg4PSIaHlFFxGX5TD+HnASsJ+k/xV5eHIeNXYBaaDA/HzF+DrgSNIw6sYrpW0lTWmyq21btcX6kb4eeeDFSzsW0sn0n0m3aX4BfCX/+dN5+xjg6bzuJ8AmPdxfAI+3od2vz3VNaVh/BF2MLiMFUgCjm2zbHpiXt88mBcGmwKCCbfo4a0eHrSGFzqZ52+9Yf5TY88AbGup4ukm5xuVf+vq48VL94o5/2+jl0U5XkE6Oc0kPUa4jIh4G3k26+jgW+FnjSCpJm0jaNndk9/jfhqTBeWqa7XpaVxfWuSLLt7l+DYwF/kLqF1pOCotXJEWrBfgMaTj2IlI4KSJqgxW+CRxHGsq9T673axGxoEnbWo0uswHAt8tsoyZpK9L/6g8njZB6T0Q83+zhyYh4UNJhpGdGjgT+VdKHYm2/wzjS8y21ulvt/g0t+mRqVpOGCNfqvYj0LM67WTvSbIykfyD11/SkX2MzUqgsIo2U2590O20VaVj0aNItvYdZv3N+K2AEKRzulvRW0jDwr9QKRMT1+XcYDNxOGlBwXg/aa/2cQ8Y2WpJ2A64lPRz5B+DQaDE1SkTcK2kSaaqYI4CfSDo2Uif2EtIJcxXp5F/mWZW9gKNyO67L64bkpfGqaDvgf7DuUOZj8gJwL/BtilknCSPiyfx0/04RMR+YTx6AkPusVgEvAG+OiHVCRtLxpCvCp3Jdy1g7Sq/Rd0kBtk+07t+yAcwhYxudfCvrn0jPoWwF3AJ8MCKeK/L+iLgtD9n9MXA08FLu4J4PfL6bbfoIKWR+HxFTWhSvTRPzImuvcK4gPdg4JK+vTYdznKT9m9QxLr+u9/BkRKwmhUujXUn/5uc1Bky2U37tdJqaPKBgOulzuxV4b54YdBfSVdBREbEoF99e0sVNqtm6yTrrpxwytjGaTBrdFaSHB78cDUNtW4mIGXlo8Fm5nteuCPIoqi3Ic6OVrTuHYG3yylcj4oUCb3sqIn5TV8cR+Y8H56UzW5Ro2jvy632dbB9Ra0sXdbyeFDCQbve9O/95MSmc6q/+tiLNv2YDmEPGNjoRcbGktwA3RsTMHtQzTdJC4JqGWz6TqHvGpeRXyhyXl5ofAF/obhtJz6Nc1YP31zsqv97RyfaWIRMRcyT9ljT7we9It/YeiubPxyyIiFGNK3O4N7vSsn7IIWMbpYjorK+gbD1XN1n9F1I41J6RETCcNCy3M/V9MjeROuA3Iz1F3+dyJ/57gb8BnQVz7XZZV1cyRMQBbWya9XMOGbMGkR5cvB9A0jDSSXkEsH/uDF9PQ5/MV7uzX0nDSbM7jwCWdqeOTurdgvQMkYAfRMTKToqOID102lWYdrWfkRHxRPdaaf2Vn5Ox/qp2bPfo65Mj4r9Isw2PBn7Rjudn6oxgbf/GqaTRbTNZO01Lj+Uh3jeQnpv5PfCtTsptQ5rWZnGsnS6mszolaaSkD0iaJunW/L0689rVbus/fCVj/VVtEsp2HOMnka4wDsx/Pr9JmdpUKV0+NyPpy6Rv0QSon1zzZdLUMneTRm31+AFOSQeQRq2NAR4FDou6WZjzQ6Lbkqa2OYkUyA+3qPNO0mexed3qV0lBPLunbbb+xyFj/dWQhtduizRL8WTSl5ddVluf50H7MinQJubVTW+n1XkP6TtoXgJ+RXow9E7ggfpRbPn2G8C3JH1lvVqSQaQhzFtExI517z0Q+BLpy9Eg9Qsd2eRW306kq5v6WaF/2KL9fyKF7VzSs0a3AffXOv4lPUl6+HQHICQ1+1rm2rDrwyQ9AWwZEdu32K9tpBwy1l8NbXjtkUhfUtY49PfPpNDYiTR09zbSgIGuXAncDFwdEa36XZaQri46m1CyfjLOes+SvjRtJWkamLOb3QKLiIck3QK8iRREV0bEv7do07nABRHxYCfbtyF9Fn/Lr521fUlu/9ZN2m/9iJo/k2VmReSZiNeQOvw3mGnu82iypXUPRpr1CYeMmZlVxqPLzMysMgO+T2aHHXaIUaNG9XUzzMw2Kvfff/8zEdHRqtyAD5lRo0YxZ86cvm6GmdlGRVKz7xBaj2+XmZlZZRwyZmZWGYeMmZlVxiFjZmaVcciYmVllHDJmZlYZh4yZmVXGIWNmZpVxyJiZWWUG/BP/ZhsLTe3Rl3wWEmd4wlxrL1/JmJlZZRwyZmZWGYeMmZlVxiFjZmaVcciYmVllHDJmZlYZh4yZmVXGIWNmZpVxyJiZWWUcMmZmVhmHjJmZVcYhY2ZmlSkcMpL2lHSjpBWSnpY0VVK3QkrSBEl3SnpO0gJJJzUpM1jSlyU9IullSask3SBpVJOy75N0n6SVkv4s6YPdaZeZmbVXoVmYJY0BZpNC6RxgCHBKfv9pZXYoaQJwO7AUOBMYAZwvaU1EXFZXdDrweeB64HvAGOCzwB2S9oqIlbm+DwE/A/4T+CqwD/Cvkg6NiFvKtM3MzNqr6FT/04FhwH4RMRdA0iJSOFweEfNL7PMiYBUwISKezHWtBqZLmhERL0jaC/gccFpETKu9UdIK4AzgfaQg2Ry4AJgPjI+IZ3O5oXk/byzRLjMza7OWt7skDQMOBWbWAia7ghQWk4ruTNIewFjgqlrAZN8HtgYm5p8HA18Hzm6oYk5+3TG/HgIMB86rBUxdfaMlva1o28zMrP2K9KnsTrriuaN+ZUSsAeYB+5bY39j82ljXYmBRra6I+ENEnBURLze8f//8+vuu6gMeAKJk28zMrM2KhMx2+fWxJtuWAKNK7K/bdUl6HXAC8CBwV1f1RcRqYEXJtpmZWZsV6ZOpBdHzTbatBLYpsb+e1HU+sD3w4Yh4pa6+yO8tXJ+kycBkgJEjR7ZutZmZdUuRK5naCbzZF4wPAoaW2F+36sqh8FHguxFRf2tsJSlkmv0endYXEZdGxLiIGNfR0VG07WZmVlKRkFmYX3dtsm048GyT9W2rS9KBpKuYW0hDlBvrGwSMbHjPYNJVT5m2mZlZmxUJmUdJJ+uD6lfmE/k4Uod9UXNJVx6NdXUAoxvryqPRfgk8Ahxdd5us5v78elDD+n2AzUq2zczM2qxlyOQT+3XAUZLqrxiOIfV53Fx0ZxGxjPRQ5/GS6vtLTiDdQnutLkm7kx7aXA0c1jBEueYB0jMyn5W0ad36T+fXwm0zM7P2K/ow5jTgg8AsSacBrwe+AywGZgBI2hvYG7g1IpZ0UdfppCHHN0malt9zOmnU2C25rs2Am/J+vge8Q9I76up4NCLujoiQ9DXgJ8AvJF0IvBs4Hrg5Ih4q+PuZmVkFCoVMRDws6TDgauDavPpR4KMRsTz/fCTpafxDSMORO6trtqSjgYuBmXn1XNKosTX557exdvjxF5tUczVwd65vRr4q+i7wgbz9DuC4Ir+bmZlVRxFRvHC6JTWedJvtrvw8Svd2LG2R61oF3NOkv6VsfduSHtZ8JiLmtCpfM27cuJgzp3Bxsz6jqc0GZbZXnFH8fGADm6T7I2Jcq3JFb5cBEBEvAXd2u1Xr1rUSuK0ddeX6VgCz2lWfmZn1XKmQMRvoqr6a8JWE9Tf+0jIzM6uMQ8bMzCrjkDEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCrjkDEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCrjkDEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyhQOGUl7SrpR0gpJT0uaKqlbISVpgqQ7JT0naYGkk1qUP1vS451s21TSKknRZDm0O+0zM7P22KRIIUljgNmkUDoHGAKckt9/WpkdSpoA3A4sBc4ERgDnS1oTEZc1KX8y8CVgQSdV7gMMBaYCjzRs+0OZtln3aKr6ugk9FmdEXzfBrF8qFDLAdGAYsF9EzAWQtIgUDpdHxPwS+7wIWAVMiIgnc12rgemSZkTEC3ndUOBC4FhgWRf1jQdeBaZHxHMl2mFmZhVrebtL0jDgUGBmLWCyK0hhManoziTtAYwFrqoFTPZ9YGtgYt26icA7gYOBP3ZR7QTgAQeMmdmGp0ifyu6kK5476ldGxBpgHrBvif2Nza+NdS0GFjXUdT+wV0Tc06LO8cBWkh7MfTMLJV0oqaNEu8zMrAJFQma7/PpYk21LgFEl9le4roh4KiKe76oySaOBnYDhwK3AycBM4FPAHZKK3g40M7MKFDkJ14Ko2Ql/JbBNif21sy5IfTGnAz+NiNc6/SXdS7qddwTwi8Y3SZoMTAYYOXJkyV2amVlRRa5kVubXZkOIBpFGdhXVzrqIiMcj4hv1AZNdCbzAun089e+7NCLGRcS4jg7fVTMzq0qRkFmYX3dtsm048GyJ/bWzrk5FRJACbZd21GdmZt1TJGQeJZ38D6pfKWkwMI7UYV/UXCCa1NUBjC5ZF5ImS/pRk/U7Ax2kZ3HMzKyPtAyZiHgFuA44SlJ9B8YxpD6Um4vuLCKWkR7qPF5Sff/LCaRbaIXryrYFPinpkNqKHH7n5B+vL1mfmZm1UdFpYaaRQmCWpEmSTiQ9KLkYmAEgaW9JH5O0Y4u6TieNCLtJ0uGSTs3rHgRuKdn+S4GngBsk/UjSuaSrpQ+TgvHakvWZmVkbFQqZiHgYOAzYnHTivpB0K2pSRCzPxY4EriE9V9NVXbOBo4HdSMONpwEPAUflZ28Ki4gVpIcxryeNJJsMvAh8Jtf3apn6zMysvQo/RxIRs/McZuNJ4XRXRKyu2z4FmFKwrmslzcp1rQLuybflOit/cBfbniBNPWNmZhuYUg8rRsRLwJ3t2HFErARua0ddZma2YfL3yZiZWWUcMmZmVhmHjJmZVcYhY2ZmlXHImJlZZRwyZmZWGYeMmZlVxiFjZmaVcciYmVllHDJmZlYZh4yZmVXGIWNmZpVxyJiZWWUcMmZmVhmHjJmZVcYhY2ZmlXHImJlZZRwyZmZWGYeMmZlVxiFjZmaVcciYmVllHDJmZlYZh4yZmVXGIWNmZpVxyJiZWWUcMmZmVhmHjJmZVcYhY2ZmlXHImJlZZRwyZmZWGYeMmZlVxiFjZmaVKRwykvaUdKOkFZKeljRVUrdCStIESXdKek7SAkkntSh/tqTHe6NtZmbWPpsUKSRpDDCbFErnAEOAU/L7TyuzQ0kTgNuBpcCZwAjgfElrIuKyJuVPBr4ELKi6bWZm1l6FQgaYDgwD9ouIuQCSFpHC4fKImF9inxcBq4AJEfFkrms1MF3SjIh4Ia8bClwIHAss66W2mZlZG7W8pSRpGHAoMLN2Es+uIIXFpKI7k7QHMBa4qhYw2feBrYGJdesmAu8EDgb+WHXbzMys/Yr0W+xOuuK5o35lRKwB5gH7ltjf2PzaWNdiYFFDXfcDe0XEPb3UNjMza7Mit8u2y6+PNdm2BBhVYn+F64qIp3q5bWZm1mZFrmRqZZ5vsm0lsE039teOurpdn6TJkuZImrNsWVfdPWZm1hNFQmZlflUn7x9aYn/trKvb9UXEpRExLiLGdXR0lNylmZkVVSRkFubXXZtsGw48W2J/7ayrivrMzKyNioTMo6ST9UH1KyUNBsaROuyLmgtEk7o6gNEl62p328zMrM1ahkxEvAJcBxwlaWTdpmNIfR43F91ZRCwjPTh5vKT6/pITSLe8CtfV7raZmVn7FZ16ZRopBGZJmiTpRNKDkouBGQCS9pb0MUk7tqjrdGAn4CZJh0s6Na97ELilG79Dy7aZmVnfKBQyEfEwcBiwOXAt6SS+FJgUEctzsSOBa0jPrnRV12zgaGA3YCYpJB4CjsrPt5RSsG1mZtYHik4rQ0TMzvOEjSeF010Rsbpu+xRgSsG6rpU0K9e1Crgn3/rqrPzBPWmbmZn1jcIhAxARLwF3tmPHEbESuK0ddeX62tY2MzNrD0+Hb2ZmlXHImJlZZRwyZmZWGYeMmZlVxiFjZmaVcciYmVllHDJmZlYZh4yZmVXGIWNmZpUp9cS/mVk9TW32fYHWTJwRfd2EPuErGTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCrjkDEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCpTOGQk7SnpRkkrJD0taaqkboWUpAmS7pT0nKQFkk7qbjlJO0uKTpY3d6d9ZmbWHpsUKSRpDDCbFErnAEOAU/L7TyuzQ0kTgNuBpcCZwAjgfElrIuKysuWA8fn1fwMrGna3qEzbzMysvQqFDDAdGAbsFxFzASQtIp30L4+I+SX2eRGwCpgQEU/mulYD0yXNiIgXSpYbDyyLiAtKtMHMzHpBy9tdkoYBhwIzawGTXUEKgUlFdyZpD2AscFUtOLLvA1sDE8uUyyYAdxZtg5mZ9Z4ifSq7k6547qhfGRFrgHnAviX2Nza/Nta1mHRra98y5SRtAbwVGC3pL5JelDRf0rckbVWiXWZmVoEit8u2y6+PNdm2BBhVYn9F6ypabn/S77AjcDUpgCYAXwH2IV2BmZlZHykSMrWrneebbFsJbFNif0XrKlruGeAM4KKIWJbX/VDSI8DXJY2LiDmNFUiaDEwGGDlyZInmm5lZGUVul63Mr+rk/UNL7K9oXYXKRcS8iDizLmBqaoMAJtJERFwaEeMiYlxHR0fhxpuZWTlFQmZhft21ybbhwLMl9le0rp7us3YFtEuJtpmZWZsVCZlHSSf1g+pXShoMjKPcsyhzgWhSVwcwuq6uQuUkfU3St5vsZ5/8urRE28zMrM1ahkxEvAJcBxwlqb4D4xhS38jNRXeWb2vNBo6XVN+XcwLp1tjNZcoBOwFfqH+yP484+1b+8fqibTMzs/YrOi3MNNLJfZakSZJOBC4EFgMzACTtLeljknZsUdfppHC4SdLhkk7N6x4EbilZ7rvAauA3ki6WdF7e/g7gvGad/mZm1nsKhUxEPAwcBmwOXEsKmKXApIhYnosdCVxDeq6mq7pmA0cDuwEzSQH2EHBUfvamcLk808AE4G7gWOATpP6cj0TE54v8bmZmVp2i08oQEbPzHGbjSeF0V0Ssrts+BZhSsK5rJc3Kda0C7sm35UqXi4iHgPcX/T3MzKz3FA4ZgIh4iTZN4RIRK4Hb2lXOzMw2PP4+GTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCpTaloZ23BoarMvDW2vOCMq34eZ9W++kjEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyjhkzMysMg4ZMzOrjEPGzMwq45AxM7PKOGTMzKwyDhkzM6uMQ8bMzCrjkDEzs8o4ZMzMrDIOGTMzq4xDxszMKuOQMTOzyvibMXvA305pZtY1X8mYmVllHDJmZlYZh4yZmVWmcMhI2lPSjZJWSHpa0lRJ3QopSRMk3SnpOUkLJJ3UG+XMzKx3Fer4lzQGmE0KpXOAIcAp+f2nldmhpAnA7cBS4ExgBHC+pDURcVlV5czMrPcVHV02HRgG7BcRcwEkLSKdzC+PiPkl9nkRsAqYEBFP5rpWA9MlzYiIFyoqZ2Zmvazl7S5Jw4BDgZm1gMmuIJ3cJxXdmaQ9gLHAVbVAyL4PbA1MrKKcmZn1jSJ9KruTrnjuqF8ZEWuAecC+JfY3Nr821rUYWFRXV7vLmZlZHygSMtvl18eabFsCjCqxv6J1tbucmZn1gSJ9MrUger7JtpXANiX2V7Sudpdbh6TJwOTaeyX9uYs2N9oBeKZE+R7RlOpnFeilfffq51ZWX37O9Zq0Y8Acb220QR5rG8FnW/Zze0ORQkVCZmV+bfYJDQKGFm1RibraXW4dEXEpcGmrxjYjaU5EjOvOewcyf27d48+tPH9m3VPV51bkdtnC/Lprk23DgWdL7K9oXe0uZ2ZmfaBIyDxKOlkfVL9S0mBgHKmDvai5QDSpqwMYXVdXu8uZmVkfaBkyEfEKcB1wlKSRdZuOIfV53Fx0ZxGxjPRQ5/GS6vtLTiDd8rq5inJt1q3bbObPrZv8uZXnz6x7KvncFNF6Kvn8xP8DwBOkJ/xfD3yH1OG+V0Qsl7Q3sDdwa0Qs6aKuA0lDju8FpuX3TAX+BIzLQ6PbXs7MzHpfoZCB107mV7N2WPCjwEcj4t68fQpwBnBIRPy6RV1HAhcDHXnVXODDEfGXKsuZmVnvKhwyAJI2BcaTbrPdFRGru71jaYtc1yrgnnxbrvJy1n6SRgGtphY6BPgt8F80H/X33oiY1d6WWX8i6UTgwohYbzSppA8ApwN7kc5PDwEnR8Sv6spsio+/XlcqZAaCogdinphzGvA2YDlwdkT8sNcaugGRtCWdTy/0cVLAjCGN+LuXdDvzkYZyt+eZGvq9FifLXYCzgXeRHjH4CfB/I+LF7pTrLyQdDfwUGNT4ueU7Gb8A/gBcQ/q3+39IfcbjImJeLrcfA/D4a3G8PUoaJNXoxIi4uK7cnqTjbQLwInAJMDUiXm21f3/98vr2IR2kzQ7EP4Bnfm6UJyH9ceN6ScOBC4HzIuJxSUcArwLTI+K5Xm7mBiGfLC/oZNsOpIEsf0eaf28F8GXgdcBHy5brD/LXiXyDNOv708BODds3A84DZgEfiIiX8/q7gF8BnwY+k4uPZ4Adfy2Otx1JAXMhcHfD5nvryvVsFv6I8FK3AF8AXgG27qLMPOBvwC51675DugLasq9/hw1lIf1vZymwTf7558B9fd2uPvosBgFnAS+Tnu+KJmXOJw3Jf3/duvfmdQeWLdcfFuAtwDLg/cBVjZ8b6er4FGDXhvVb5c/j3+rWDZjjr+DxdkT+jPZoUdcNwEvAPnXrTsx179qyLX39YWxoS6sDEdgj/8Wc27D+7/L6I/v6d9gQFmC3fBB+rm7dQuA/gQdJfWcLSf+L6ujr9vbC59HqZCnS/9TnNnnvn0lXg4XL9ZeFND9hR/7zep9bF+97V/73+PW6dQPm+Gt1vOUy3yXN8agu6hmWA+aXDes3A54DvtiqLf765fWNB7aS9KCkVZIWSrowP+AJnvm5qFNIt3EuB5A0mnSrYzhwK3AyMBP4FHCHpP5+6/ZJ0v8Yb+hk+3BgRxqOq2wOa4+rouX6hYhYHul5uLJOIfUdXA0D8vhrdbxBOte9CPxO0guSlkq6RlL9DCo9noW/v32wPVJ3IA4lHZwXkf5H8CngHZL2wTM/tyRpBKnDf1pE1OaXe5U0+uenEfFIXdl7Sd9NdASp87ZfiojlLYq0Oq4OLlluwJL0KdKVzNSIeCKvHlDHX6vjTdJQ0owtLwM3AVcCbyJNHPz3kvaMiL/RhvOdQ2ZdRQ7Eds5K3V+dSPqcLqqtiIjHSR24ja4kddxOpB+ovmJtAAACt0lEQVT9I++GSmceHygkvYV0PP0W+GZtvY+/9WxJGrR0S0TcV1spaSZpUNM/kjr5e3y8+XZZnYh4PCK+UR8w2ZXAC6QDsZ2zUvc7eTTQccDNEbG0VflIN3hXArtU3bYNXKUzjw8EebTU/yM9UvDByCPNujJQj7+I+GtEnFUfMHn9HaR+q9q3Cvf4eHPIFNBwIHrm5669C9iZ9LzCayRNlvSjxsKSdibN1NAykPq5RaSO6lbHVdFyA4qkrUh9LDuQRt093bDdx19xz7M2dHt8vnPI1Cl4IHrm5659mDQa5caG9dsCn5R0SG1Fnsn7nPzj9b3TvA1TpNkz/oOG4yrbn3xcFS03kOSA+f/AW4GjI2Juk2I+/upImiTpekmND7YOIXX210K3x7PwO2TW1fJAjL6Z+XljcihpCHjjPdxLgaeAGyT9SNK55DnmSLN8X9u7zdwg/RtwoKTXvjhK0gHAnqx7XBUtN1BcAhxAGjW2naSP1S1H5DI+/ta1KWl483EN679JesboemjTLPx9PZ57Q1pIIfMk6XLxR8C5pGF6AfySNKUFwIGkURm/BQ4HTgVqQ/o26+vfow8/v7fkz+qbnWwfCcwg3TN/AfgdeZBAX7e9lz+nq2j+3MIOpP8ZLgSOBT5GeibmeeBNZcv1t6WLz+3FfNw1Wx4f6Mdfs8+NNOjrAdJdhxnAdOCu/JndDWxeV3ZMPrb+SJo+6kTSg+eLgO1a7r+vP4ANbSl6IAJHki4pawfzA8Bufd1+Lxv+0tnJMm8bC/y+7rh6Gji8u+W8eOkinLcnPYy6hPRw6rz8H+ahTcoeSJoEt3a8PQK8vcj+PUFmD3jmZ6tCHqH3dmBr0mznzYaPFi5n1g7dnYXfIWNmZpVxx7+ZmVXGIWNmZpVxyJiZWWUcMmZmVhmHjJmZVcYhY2ZmlflvZyZgeUAxTFYAAAAASUVORK5CYII=\n",
232 | "text/plain": [
233 | ""
234 | ]
235 | },
236 | "metadata": {},
237 | "output_type": "display_data"
238 | }
239 | ],
240 | "source": [
241 | "fig, ax = plt.subplots()\n",
242 | "bins = [50, 60, 70, 90, 100,110, 140, 150]\n",
243 | "ax.hist(x, bins, density=1, histtype='bar', color=\"g\",rwidth=0.8)\n",
244 | "ax.set_title('不等距分组')\n",
245 | "plt.show()"
246 | ]
247 | },
248 | {
249 | "cell_type": "markdown",
250 | "metadata": {},
251 | "source": [
252 | "## 多类型直方图"
253 | ]
254 | },
255 | {
256 | "cell_type": "code",
257 | "execution_count": 6,
258 | "metadata": {},
259 | "outputs": [
260 | {
261 | "data": {
262 | "image/png": "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\n",
263 | "text/plain": [
264 | ""
265 | ]
266 | },
267 | "metadata": {},
268 | "output_type": "display_data"
269 | }
270 | ],
271 | "source": [
272 | "# 用来正常显示负号\n",
273 | "plt.rcParams['axes.unicode_minus']=False\n",
274 | "\n",
275 | "# 指定分组个数\n",
276 | "n_bins=10\n",
277 | "\n",
278 | "fig,ax=plt.subplots(figsize=(8,5))\n",
279 | "\n",
280 | "# 分别生成10000 , 5000 , 2000 个值\n",
281 | "x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]\n",
282 | "\n",
283 | "\n",
284 | "# 实际绘图代码与单类型直方图差异不大,只是增加了一个图例项\n",
285 | "# 在 ax.hist 函数中先指定图例 label 名称\n",
286 | "ax.hist(x_multi, n_bins, histtype='bar',label=list(\"ABC\"))\n",
287 | "\n",
288 | "ax.set_title('多类型直方图')\n",
289 | "\n",
290 | "# 通过 ax.legend 函数来添加图例\n",
291 | "ax.legend()\n",
292 | "\n",
293 | "plt.show()"
294 | ]
295 | }
296 | ],
297 | "metadata": {
298 | "kernelspec": {
299 | "display_name": "Python 3",
300 | "language": "python",
301 | "name": "python3"
302 | },
303 | "language_info": {
304 | "codemirror_mode": {
305 | "name": "ipython",
306 | "version": 3
307 | },
308 | "file_extension": ".py",
309 | "mimetype": "text/x-python",
310 | "name": "python",
311 | "nbconvert_exporter": "python",
312 | "pygments_lexer": "ipython3",
313 | "version": "3.6.5rc1"
314 | }
315 | },
316 | "nbformat": 4,
317 | "nbformat_minor": 2
318 | }
319 |
--------------------------------------------------------------------------------
/matplotlib可视化直方图/matplotlib可视化直方图.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ```python
4 | import matplotlib.pyplot as plt
5 | import numpy as np
6 | ```
7 |
8 | ## 直方图参数
9 |
10 | plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None)
11 |
12 | * x:指定要绘制直方图的数据;输入值,这需要一个数组或者一个序列,不需要长度相同的数组。
13 | * bins:指定直方图条形的个数;
14 | * range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;
15 | * density:布尔,可选。如果"True",返回元组的第一个元素将会将计数标准化以形成一个概率密度,也就是说,直方图下的面积(或积分)总和为1。这是通过将计数除以数字的数量来实现的观察乘以箱子的宽度而不是除以总数数量的观察。如果叠加也是“真实”的,那么柱状图被规范化为1。(替代normed)
16 | * weights:该参数可为每一个数据点设置权重;
17 | * cumulative:是否需要计算累计频数或频率;
18 | * bottom:可以为直方图的每个条形添加基准线,默认为0;
19 | * histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;
20 | * align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;
21 | * orientation:设置直方图的摆放方向,默认为垂直方向;
22 | * rwidth:设置直方图条形宽度的百分比;
23 | * log:是否需要对绘图数据进行log变换;
24 | * color:设置直方图的填充色;
25 | * label:设置直方图的标签,可通过legend展示其图例;
26 | * stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;
27 | * normed:是否将直方图的频数转换成频率;(弃用,被density替代)
28 | * alpha:透明度,浮点数。
29 |
30 | ## 返回值
31 |
32 | ### n : 数组或数组列表
33 |
34 | 直方图的值
35 |
36 |
37 | ### bins : 数组
38 |
39 | 返回各个bin的区间范围
40 |
41 | ### patches : 列表的列表或列表
42 |
43 | 返回每个bin里面包含的数据,是一个list
44 |
45 |
46 |
47 | ```python
48 | plt.rcParams['font.family']='SimHei'
49 | plt.rcParams['font.size']=20
50 |
51 | # 直方图
52 | mu = 100
53 | sigma = 20
54 | x = np.random.normal(100,20,100) # 均值和标准差
55 |
56 | plt.hist(x,bins=20,color='red',histtype='stepfilled',alpha=0.75)
57 | plt.title('直方图数据分析与展示')
58 | plt.show()
59 | ```
60 |
61 |
62 | 
63 |
64 |
65 | ## 等距直方图
66 |
67 |
68 | ```python
69 | mu = 100 # 平均分布
70 | sigma = 15 # 标准偏差的分布
71 | x = mu + sigma * np.random.randn(500)
72 |
73 | # 指定分组个数
74 | num_bins = 10
75 |
76 |
77 |
78 | # 通过调用 as.hist 函数,来生成组数为 10 的直方图:
79 |
80 | fig, ax = plt.subplots()
81 | n, bins_limits, patches = ax.hist(x, num_bins, density=1)
82 |
83 | print("n 是分组区间对应的频率:",n,end="\n\n")
84 | print("bins_limits 是分组时的分隔值:",bins_limits,end="\n\n")
85 | print("patches 指的是是直方图中列表对象",type(patches),end="\n\n")
86 |
87 | for a,b in enumerate(patches):
88 | print(a,b) # 遍历取出patches列表的序列和值
89 |
90 |
91 | ```
92 |
93 | n 是分组区间对应的频率: [0.00087199 0.00152598 0.00610392 0.01286182 0.01678577 0.02681363
94 | 0.02463366 0.01264383 0.00479593 0.00196197]
95 |
96 | bins_limits 是分组时的分隔值: [ 50.03282244 59.2072611 68.38169976 77.55613842 86.73057707
97 | 95.90501573 105.07945439 114.25389305 123.42833171 132.60277037
98 | 141.77720903]
99 |
100 | patches 指的是是直方图中列表对象
101 |
102 | 0 Rectangle(xy=(50.0328, 0), width=9.17444, height=0.000871988, angle=0)
103 | 1 Rectangle(xy=(59.2073, 0), width=9.17444, height=0.00152598, angle=0)
104 | 2 Rectangle(xy=(68.3817, 0), width=9.17444, height=0.00610392, angle=0)
105 | 3 Rectangle(xy=(77.5561, 0), width=9.17444, height=0.0128618, angle=0)
106 | 4 Rectangle(xy=(86.7306, 0), width=9.17444, height=0.0167858, angle=0)
107 | 5 Rectangle(xy=(95.905, 0), width=9.17444, height=0.0268136, angle=0)
108 | 6 Rectangle(xy=(105.079, 0), width=9.17444, height=0.0246337, angle=0)
109 | 7 Rectangle(xy=(114.254, 0), width=9.17444, height=0.0126438, angle=0)
110 | 8 Rectangle(xy=(123.428, 0), width=9.17444, height=0.00479593, angle=0)
111 | 9 Rectangle(xy=(132.603, 0), width=9.17444, height=0.00196197, angle=0)
112 |
113 |
114 |
115 | 
116 |
117 |
118 | ### xy:xy位置(x取值bins_limits 是分组时的分隔值,y取值都是0开始)
119 | ### width :宽度为各个bin的区间范围(bins_limits 是分组时的分隔值)
120 | ### height :高度也就是密度值(n 是分组区间对应的频率)
121 | ### angle:角度
122 |
123 | ## 添加分布曲线
124 |
125 |
126 | ```python
127 | plt.rcParams['font.family']='SimHei'
128 | plt.rcParams['font.size']=20
129 |
130 | mu = 100
131 | sigma = 20
132 | x = np.random.normal(100,20,100) # 均值和标准差
133 |
134 | # 指定分组个数
135 | num_bins = 10
136 |
137 |
138 | fig, ax = plt.subplots()
139 |
140 | # 绘图并接受返回值
141 | n, bins_limits, patches = ax.hist(x, num_bins, density=1)
142 |
143 |
144 | # 添加分布曲线
145 | ax.plot(bins_limits[:10],n,'--')
146 |
147 |
148 | plt.title('直方图数据添加分布曲线')
149 | plt.show()
150 | ```
151 |
152 |
153 | 
154 |
155 |
156 | ## 不等距分组
157 | 上面的直方图都是等距的,但有时我们需要得到不等距的直方图,这个时候只需要确定分组上下限,并指定 histtype="bar" 就可以
158 |
159 |
160 | ```python
161 | fig, ax = plt.subplots()
162 | bins = [50, 60, 70, 90, 100,110, 140, 150]
163 | ax.hist(x, bins, density=1, histtype='bar', color="g",rwidth=0.8)
164 | ax.set_title('不等距分组')
165 | plt.show()
166 | ```
167 |
168 |
169 | 
170 |
171 |
172 | ## 多类型直方图
173 |
174 |
175 | ```python
176 | # 用来正常显示负号
177 | plt.rcParams['axes.unicode_minus']=False
178 |
179 | # 指定分组个数
180 | n_bins=10
181 |
182 | fig,ax=plt.subplots(figsize=(8,5))
183 |
184 | # 分别生成10000 , 5000 , 2000 个值
185 | x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]
186 |
187 |
188 | # 实际绘图代码与单类型直方图差异不大,只是增加了一个图例项
189 | # 在 ax.hist 函数中先指定图例 label 名称
190 | ax.hist(x_multi, n_bins, histtype='bar',label=list("ABC"))
191 |
192 | ax.set_title('多类型直方图')
193 |
194 | # 通过 ax.legend 函数来添加图例
195 | ax.legend()
196 |
197 | plt.show()
198 | ```
199 |
200 |
201 | 
202 |
203 |
--------------------------------------------------------------------------------
/matplotlib可视化直方图/output_11_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化直方图/output_11_0.png
--------------------------------------------------------------------------------
/matplotlib可视化直方图/output_2_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化直方图/output_2_0.png
--------------------------------------------------------------------------------
/matplotlib可视化直方图/output_4_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化直方图/output_4_1.png
--------------------------------------------------------------------------------
/matplotlib可视化直方图/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化直方图/output_7_0.png
--------------------------------------------------------------------------------
/matplotlib可视化直方图/output_9_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化直方图/output_9_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/matplotlib可视化箱线图.md:
--------------------------------------------------------------------------------
1 |
2 | # 前言
3 | + 针对离散变量我们可以使用常见的条形图和饼图完成数据的可视化工作,那么,针对数值型变量,我们也有很多可视化的方法,例如箱线图、直方图、折线图、面积图、散点图等等。先来数值型变量的箱线图绘制。箱线图一般用来展现数据的分布(如上下四分位值、中位数等),同时,也可以用箱线图来反映数据的异常情况。
4 |
5 | ## boxplot函数的参数解读
6 | ### 绘图之前,我们先来讲解一下matplotlib包中boxplot函数的参数含义及使用方法:
7 |
8 | plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)
9 |
10 | - x:指定要绘制箱线图的数据;
11 |
12 | - notch:是否是凹口的形式展现箱线图,默认非凹口;
13 |
14 | - sym:指定异常点的形状,默认为+号显示;
15 |
16 | - vert:是否需要将箱线图垂直摆放,默认垂直摆放;
17 |
18 | - whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
19 |
20 | - positions:指定箱线图的位置,默认为[0,1,2…];
21 |
22 | - widths:指定箱线图的宽度,默认为0.5;
23 |
24 | - patch_artist:是否填充箱体的颜色;
25 |
26 | - meanline:是否用线的形式表示均值,默认用点来表示;
27 |
28 | - showmeans:是否显示均值,默认不显示;
29 |
30 | - showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
31 |
32 | - showbox:是否显示箱线图的箱体,默认显示;
33 |
34 | - showfliers:是否显示异常值,默认显示;
35 |
36 | - boxprops:设置箱体的属性,如边框色,填充色等;
37 |
38 | - labels:为箱线图添加标签,类似于图例的作用;
39 |
40 | - filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
41 |
42 | - medianprops:设置中位数的属性,如线的类型、粗细等;
43 |
44 | - meanprops:设置均值的属性,如点的大小、颜色等;
45 |
46 | - capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;
47 |
48 | - whiskerprops:设置须的属性,如颜色、粗细、线的类型等;
49 |
50 | ## 生成随机数
51 |
52 | 在这里我们利用 numpy 库生成三组正态分布随机数:
53 |
54 |
55 | ```python
56 | import matplotlib.pyplot as plt
57 | import numpy as np
58 | all_data=[np.random.normal(0,std,100) for std in range(1,4)]
59 |
60 | figure,axes=plt.subplots() #得到画板、轴
61 | axes.boxplot(all_data,patch_artist=True) #描点上色
62 | plt.show() #展示
63 | ```
64 |
65 |
66 | 
67 |
68 |
69 | ### plt.subplots 顾名思义是子图集合,当不指定 plt.subplots() 的 nrows 和 ncols 参数值时,默认只生成一张图。
70 |
71 | ### Note:默认 patch_artist=False,所以我们需要指定其参数值为 True,即可自动填充颜色。
72 |
73 | ## 多图输出
74 |
75 | + 有时我们会有把多张图放在同一行输出的对比需求,这时只需指定 plt.subplots() 函数的 nrows,ncols 参数值,举个例子,我想生成一个 2x3 的面板,即每一行放三张图,只需设定 nrows=2,ncols=3。
76 |
77 | - 当然,你还可以通过参数 figsize 指定图形大小。
78 |
79 |
80 | ```python
81 | import matplotlib.pyplot as plt
82 | import numpy as np
83 | all_data=[np.random.normal(0,std,100) for std in range(1,4)]
84 | #首先有图(fig),然后有轴(ax)
85 | fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))
86 |
87 |
88 | bplot1=axes[0].boxplot(all_data,
89 | vert=True,
90 | patch_artist=True)
91 |
92 | #axes[0]表示在第一张图的轴上描点画图
93 | #vert=True表示boxplot图是竖着放的
94 | #patch_artist=True 表示填充颜色
95 |
96 | bplot2 = axes[1].boxplot(all_data,
97 | notch=True, # 切口形状
98 | vert=True,
99 | patch_artist=True)
100 | plt.show()
101 |
102 | # 第一张图是矩形箱线图
103 | # 第二张图是 notch 形状的箱线图
104 | # 显然,把两张图放在同一行输出非常有利于对比观察图形差异。
105 | ```
106 |
107 |
108 | 
109 |
110 |
111 | ## 1.1.4 美化图形
112 |
113 | 基本图形画得差不多了,接下来就只需要让它美化一下!
114 |
115 | 我们先来查看一下我们之前作出的箱线图对象的类型:
116 |
117 | + type(bplot1)
118 | + #dict
119 |
120 | 返回字典字典类型
121 |
122 | + 颜色填充
123 | 颜值即正义!要选个好的配色不容易呢…
124 |
125 | 填充颜色基本遵循以下步骤:
126 |
127 | + 指定箱线图中每个箱子的填充颜色,如:red、green、blue、pink 等
128 | 构造字典存放箱子配色 —— {箱线图中每个箱子patch:对应的配色color}
129 |
130 | + 重新上色 —— patch.set_facecolor(color)
131 |
132 |
133 | ```python
134 | import matplotlib.pyplot as plt
135 | import numpy as np
136 |
137 | all_data=[np.random.normal(0,std,100) for std in range(1,4)]
138 |
139 | #首先有图(fig),然后有轴(ax)
140 | fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))
141 |
142 |
143 | bplot1=axes[0].boxplot(all_data,
144 | vert=True,
145 | patch_artist=True)
146 |
147 |
148 | bplot2 = axes[1].boxplot(all_data,
149 | notch=True,
150 | vert=True,
151 | patch_artist=True)
152 |
153 |
154 |
155 | #颜色填充
156 | colors = ['pink', 'lightblue', 'lightgreen']
157 | for bplot in (bplot1, bplot2):
158 | for patch, color in zip(bplot['boxes'], colors):
159 | patch.set_facecolor(color)
160 |
161 | plt.show()
162 | ```
163 |
164 |
165 | 
166 |
167 |
168 | ### 添加网格线
169 | #### 你可以:
170 | + 指定在x轴上添加网格线(ax.xaxis.grid(True)),或者在y轴上添加网格线(ax.yaxis.grid(True))
171 | + 指定 x 轴和 y 轴上的刻度个数(ax.set_xticks([1,2,3]),ax.set_yticks([1,2,3,4,5,6,7,8]))
172 | + 设置 x 轴名称(ax.set_xlabel("xlabel"))
173 | + 设置 y 轴名称(ax.set_xlabel("ylabel"))
174 |
175 |
176 | ```python
177 | import matplotlib.pyplot as plt
178 | import numpy as np
179 |
180 | all_data=[np.random.normal(0,std,100) for std in range(1,4)]
181 |
182 | #首先有图(fig),然后有轴(ax)
183 | fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))
184 |
185 |
186 | bplot1=axes[0].boxplot(all_data,
187 | vert=True,
188 | patch_artist=True)
189 |
190 |
191 | bplot2 = axes[1].boxplot(all_data,
192 | notch=True,
193 | vert=True,
194 | patch_artist=True)
195 |
196 |
197 |
198 | #颜色填充
199 | colors = ['pink', 'lightblue', 'lightgreen']
200 | for bplot in (bplot1, bplot2):
201 | for patch, color in zip(bplot['boxes'], colors):
202 | patch.set_facecolor(color)
203 |
204 | # 加水平网格线
205 | for ax in axes:
206 | ax.yaxis.grid(True) #在y轴上添加网格线
207 | ax.set_xticks([y+1 for y in range(len(all_data))] ) #指定x轴的轴刻度个数
208 | ## [y+1 for y in range(len(all_data))]运行结果是[1,2,3]
209 | ax.set_xlabel('xlabel') #设置x轴名称
210 | ax.set_ylabel('ylabel') #设置y轴名称
211 |
212 | # 添加刻度
213 | # 添加刻度名称,我们需要使用 plt.setp() 函数:
214 |
215 | # 加刻度名称
216 | plt.setp(axes, xticks=[1,2,3],
217 | xticklabels=['x1', 'x2', 'x3'])
218 | # 我们的刻度数是哪些,以及我们想要它添加的刻度标签是什么。
219 |
220 | plt.show()
221 | ```
222 |
223 |
224 | 
225 |
226 |
227 |
228 | ```python
229 | import matplotlib.pyplot as plt
230 | import numpy as np
231 |
232 | # 添加标题
233 | # 使用 ax.set_title 来设置单个图形主标题,用 fig.suptitle 来设置整张画板的标题:
234 |
235 | data=np.random.binomial(n=10,p=0.76,size=(10,3))
236 | labels=list("ABC")
237 | fig,ax=plt.subplots(figsize=(9,6))
238 | ax.boxplot(data,labels=labels,patch_artist=True)
239 | plt.rcParams['font.sans-serif']=['SimHei'] #正确显示中文
240 | plt.rcParams['axes.unicode_minus']=False #用来正确显示负号
241 | ax.set_title("设置 fontsize=15 的标题",fontsize=15) #设置字体大小为15号字体
242 | fig.suptitle("Boxplot Examples",fontsize=24)
243 | plt.show()
244 |
245 | # 想必细心的朋友已经发现了我在代码里偷偷加了两行设置字体的代码,这两行代码专为防止出现中文乱码而生!
246 |
247 | # plt.rcParams['font.sans-serif']=['SimHei'] # 用来正确显示中文
248 | # plt.rcParams['axes.unicode_minus']=False # 用来正确显示负号
249 | ```
250 |
251 |
252 | 
253 |
254 |
255 |
256 | ```python
257 | import matplotlib.pyplot as plt
258 |
259 | # 其他参数
260 | # 在图上标记出均值线
261 |
262 | fig,axes=plt.subplots(1,2,figsize=(9,5))
263 | axes[0].boxplot(data,labels=labels,showmeans=True,meanline=False)
264 | axes[0].set_title("默认 meanline=False",fontsize=15)
265 | axes[1].boxplot(data,labels=labels,showmeans=True,meanline=True)
266 | axes[1].set_title("meanline=True",fontsize=15)
267 | plt.show()
268 |
269 | # Note:
270 |
271 | # meanline=False,那么均值位置会在图中用小三角表示出来
272 |
273 | # meanline=True,那么均值位置会在图中用虚线表示出来
274 | ```
275 |
276 |
277 | 
278 |
279 |
280 |
281 | ```python
282 | import matplotlib.pyplot as plt
283 |
284 | # 在图上去除离群值
285 |
286 | fig,axes=plt.subplots(1,2,figsize=(9,5))
287 | axes[0].boxplot(data,labels=labels,patch_artist=True)
288 | axes[0].set_title("默认 showfliers=True",fontsize=15)
289 | axes[1].boxplot(data,labels=labels,patch_artist=True,showfliers=False)
290 | axes[1].set_title("showfliers=False",fontsize=15)
291 | plt.show()
292 |
293 | # 默认 showfliers=True,那么图中会显示出离群值
294 |
295 | # showfliers=False,那么图中会去除离群值
296 | ```
297 |
298 |
299 | 
300 |
301 |
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_10_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_10_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_11_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_11_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_12_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_12_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_2_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_2_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_5_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_5_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_7_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_7_0.png
--------------------------------------------------------------------------------
/matplotlib可视化箱线图/output_9_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化箱线图/output_9_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/matplotlib可视化饼图.md:
--------------------------------------------------------------------------------
1 |
2 | # 前言
3 | ## pie函数参数解读
4 | plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)
5 |
6 | * x:指定绘图的数据;
7 |
8 | * explode:指定饼图某些部分的突出显示,即呈现爆炸式;
9 |
10 | * labels:为饼图添加标签说明,类似于图例说明;
11 |
12 | * colors:指定饼图的填充色;
13 |
14 | * autopct:自动添加百分比显示,可以采用格式化的方法显示;
15 |
16 | * pctdistance:设置百分比标签与圆心的距离;
17 |
18 | * shadow:是否添加饼图的阴影效果;
19 |
20 | * labeldistance:设置各扇形标签(图例)与圆心的距离;
21 |
22 | * startangle:设置饼图的初始摆放角度;
23 |
24 | * radius:设置饼图的半径大小;
25 |
26 | * counterclock:是否让饼图按逆时针顺序呈现;
27 |
28 | * wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;
29 |
30 | * textprops:设置饼图中文本的属性,如字体大小、颜色等;
31 |
32 | * center:指定饼图的中心点位置,默认为原点
33 |
34 | * frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置;
35 |
36 |
37 |
38 | ```python
39 | import matplotlib.pyplot as plt
40 | ```
41 |
42 |
43 | ```python
44 | # 正常显示中文标签
45 | plt.rcParams['font.sans-serif']=['SimHei']
46 | # 用来正常显示负号
47 | plt.rcParams['axes.unicode_minus']=False
48 |
49 | # 刻度大小
50 | plt.rcParams['axes.labelsize']=16
51 | # 线的粗细
52 | plt.rcParams['lines.linewidth']=2
53 | # x轴标签大小
54 | plt.rcParams['xtick.labelsize']=14
55 | # y轴标签大小
56 | plt.rcParams['ytick.labelsize']=14
57 | #图例大小
58 | plt.rcParams['legend.fontsize']=14
59 | # 图大小
60 | plt.rcParams['figure.figsize']=[12,8]
61 | ```
62 |
63 | ## 绘制饼状图 默认椭圆
64 |
65 |
66 | ```python
67 | #定义饼状图的标签,标签是列表
68 | labels =[ 'A','B','C','D']
69 |
70 | #每个标签占多大,会自动去算百分比
71 | x = [15,30,45,10]
72 |
73 | # 绘制饼图
74 | plt.pie(x,labels=labels)
75 |
76 | plt.show()
77 | ```
78 |
79 |
80 | 
81 |
82 |
83 | ## 绘制饼状图-正圆
84 |
85 |
86 | ```python
87 | #定义饼状图的标签,标签是列表
88 | labels =[ 'A','B','C','D']
89 |
90 | #每个标签占多大,会自动去算百分比
91 | x = [15,30,45,10]
92 |
93 | # 绘制饼图
94 | plt.pie(x,labels=labels)
95 |
96 | # 设置x,y轴刻度一致,这样饼图才能是圆的
97 | plt.axis('equal')
98 |
99 | plt.show()
100 | ```
101 |
102 |
103 | 
104 |
105 |
106 | ## 绘制饼状图-显示百分比
107 |
108 |
109 | ```python
110 | #定义饼状图的标签,标签是列表
111 | labels =[ 'A','B','C','D']
112 |
113 | #每个标签占多大,会自动去算百分比
114 | x = [15,30,45,10]
115 |
116 | # 绘制饼图,autopct='%.0f%%' 显示百分比
117 | plt.pie(x,labels=labels,autopct='%.0f%%')
118 |
119 | # 设置x,y轴刻度一致,这样饼图才能是圆的
120 | plt.axis('equal')
121 |
122 | plt.show()
123 | ```
124 |
125 |
126 | 
127 |
128 |
129 | ## 绘制饼状图-设置文本标签的属性值
130 |
131 |
132 | ```python
133 | #定义饼状图的标签,标签是列表
134 | labels =[ 'A','B','C','D']
135 |
136 | #每个标签占多大,会自动去算百分比
137 | x = [15,30,45,10]
138 |
139 | # 绘制饼图,autopct='%.0f%%' 显示百分比
140 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
141 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'})
142 |
143 | # 设置x,y轴刻度一致,这样饼图才能是圆的
144 | plt.axis('equal')
145 |
146 | plt.show()
147 | ```
148 |
149 |
150 | 
151 |
152 |
153 | ## 绘制饼状图-分离
154 |
155 |
156 | ```python
157 | #定义饼状图的标签,标签是列表
158 | labels =[ 'A','B','C','D']
159 |
160 | #每个标签占多大,会自动去算百分比
161 | x = [15,30,45,10]
162 |
163 | #0.1表示将B那一块凸显出来
164 | explode = (0,0.1,0,0)
165 |
166 | # 绘制饼图,autopct='%.0f%%' 显示百分比
167 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
168 | # explode=explode 将B那一块凸显出来
169 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'},explode=explode)
170 |
171 | # 设置x,y轴刻度一致,这样饼图才能是圆的
172 | plt.axis('equal')
173 |
174 | plt.show()
175 | ```
176 |
177 |
178 | 
179 |
180 |
181 | ## 绘制饼状图-阴影
182 |
183 |
184 | ```python
185 | #定义饼状图的标签,标签是列表
186 | labels =[ 'A','B','C','D']
187 |
188 | #每个标签占多大,会自动去算百分比
189 | x = [15,30,45,10]
190 |
191 | #0.1表示将B那一块凸显出来
192 | explode = (0,0.1,0,0)
193 |
194 | # 绘制饼图,autopct='%.0f%%' 显示百分比
195 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
196 | # explode=explode 将B那一块凸显出来
197 | # shadow=True 显示阴影
198 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'},explode=explode,shadow=True)
199 |
200 | # 设置x,y轴刻度一致,这样饼图才能是圆的
201 | plt.axis('equal')
202 |
203 | plt.show()
204 | ```
205 |
206 |
207 | 
208 |
209 |
210 | ## 绘制饼状图-角度
211 |
212 |
213 | ```python
214 | #定义饼状图的标签,标签是列表
215 | labels =[ 'A','B','C','D']
216 |
217 | #每个标签占多大,会自动去算百分比
218 | x = [15,30,45,10]
219 |
220 | #0.1表示将B那一块凸显出来
221 | explode = (0,0.1,0,0)
222 |
223 | # 绘制饼图,autopct='%.0f%%' 显示百分比
224 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
225 | # explode=explode 将B那一块凸显出来
226 | # shadow=True 显示阴影
227 | #startangle,起始角度,0,表示从0开始逆时针转,为第一块。选择从60度开始
228 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'},explode=explode,shadow=True,startangle=60)
229 |
230 | # 设置x,y轴刻度一致,这样饼图才能是圆的
231 | plt.axis('equal')
232 |
233 | plt.show()
234 | ```
235 |
236 |
237 | 
238 |
239 |
240 | ## 绘制饼状图-圆心距离
241 |
242 |
243 | ```python
244 | #定义饼状图的标签,标签是列表
245 | labels =[ 'A','B','C','D']
246 |
247 | #每个标签占多大,会自动去算百分比
248 | x = [15,30,45,10]
249 |
250 | #0.1表示将B那一块凸显出来
251 | explode = (0,0.1,0,0)
252 |
253 | # 绘制饼图,autopct='%.0f%%' 显示百分比
254 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
255 | # explode=explode 将B那一块凸显出来
256 | # shadow=True 显示阴影
257 | #startangle,起始角度,0,表示从0开始逆时针转,为第一块。选择从60度开始
258 | #pctdistance,百分比的文本离圆心的距离为0.5
259 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'},
260 | explode=explode,shadow=True,startangle=60,pctdistance = 0.5)
261 |
262 | # 设置x,y轴刻度一致,这样饼图才能是圆的
263 | plt.axis('equal')
264 |
265 | plt.show()
266 | ```
267 |
268 |
269 | 
270 |
271 |
272 | ## 绘制饼状图-提示标签
273 |
274 |
275 | ```python
276 | #定义饼状图的标签,标签是列表
277 | labels =[ '十五','三十','四十五','十']
278 |
279 | #每个标签占多大,会自动去算百分比
280 | x = [15,30,45,10]
281 |
282 | #0.1表示将B那一块凸显出来
283 | explode = (0,0.1,0,0)
284 |
285 | # 绘制饼图,autopct='%.0f%%' 显示百分比
286 | # textprops = {'fontsize':30, 'color':'k'} 大小为30,颜色为黑色
287 | # explode=explode 将B那一块凸显出来
288 | # shadow=True 显示阴影
289 | #startangle,起始角度,0,表示从0开始逆时针转,为第一块。选择从60度开始
290 | #pctdistance,百分比的文本离圆心的距离为0.5
291 | plt.pie(x,labels=labels,autopct='%.0f%%', textprops = {'fontsize':30, 'color':'k'},
292 | explode=explode,shadow=True,startangle=60,pctdistance = 0.5)
293 |
294 | # 设置x,y轴刻度一致,这样饼图才能是圆的
295 | plt.axis('equal')
296 |
297 | plt.show()
298 | ```
299 |
300 |
301 | 
302 |
303 |
304 | ### 案例:芝麻信用失信用户分析
305 | > 关于pie函数的参数我们讲了,接下来通过案例,来绘制一个个性化的饼图。关于绘图数据,我们借用芝麻信用近300万失信人群的样本统计数据,该数据显示,从受教育水平上来看,中专占比25.15%,大专占比37.24%,本科占比33.36%,硕士占比3.68%,剩余的其他学历占比0.57%。对于这样一组数据,我们该如何使用饼图来呈现呢?
306 |
307 |
308 | ```python
309 | import matplotlib.pyplot as plt
310 | # 设置绘图的主题风格
311 | plt.style.use('ggplot')
312 | # 中文乱码和坐标轴负号的处理
313 | plt.rcParams['font.sans-serif']=['SimHei']
314 | plt.rcParams['axes.unicode_minus']=False
315 | plt.rcParams['figure.figsize']=[12,12]
316 | ```
317 |
318 |
319 | ```python
320 | # 构造数据
321 | x = [0.2515,0.3724,0.3336,0.0368,0.0057]
322 |
323 | # 提示标签
324 | labels = ['中专','大专','本科','硕士','其他']
325 |
326 | # 用于突出显示大专学历人群
327 | explode = [0,0.1,0,0,0]
328 |
329 | # 自定义颜色
330 | colors=['#9F79EE','#4876FF','#EE9A00','#EE4000','#FFD700']
331 |
332 | # 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
333 | plt.axes(aspect='equal')
334 |
335 | # 控制x轴和y轴的范围
336 | plt.xlim(0,4)
337 | plt.ylim(0,4)
338 |
339 | # 绘图数据
340 | plt.pie(x, # 绘图数据
341 | explode=explode, # 突出显示大专人群
342 | autopct='%1.1f%%', # 设置百分比的格式,这里保留一位小数
343 | pctdistance=0.6, # 设置百分比标签与圆心的距离
344 | labeldistance=1.2, # 设置教育水平标签与圆心的距离
345 | startangle = 180, # 设置饼图的初始角度
346 | radius = 1.5, # 设置饼图的半径
347 | counterclock = False,
348 | wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}, # 设置饼图内外边界的属性值
349 | textprops = {'fontsize':16, 'color':'k'}, # 设置文本标签的属性值
350 | center = (2,2), # 设置饼图的原点
351 | frame = 1, # 是否显示饼图的图框,这里设置显示
352 | labels=labels, # 添加教育水平标签
353 | colors=colors # 设置饼图的自定义填充色
354 | )
355 |
356 | # 删除x轴和y轴的刻度
357 | plt.xticks(())
358 | plt.yticks(())
359 |
360 | # 添加图标题
361 | plt.title('芝麻信用失信用户教育水平分布')
362 |
363 | plt.show()
364 | ```
365 |
366 |
367 | 
368 |
369 |
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_10_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_10_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_12_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_12_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_14_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_14_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_16_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_16_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_18_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_18_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_20_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_20_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_23_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_23_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_4_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_4_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_6_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_6_0.png
--------------------------------------------------------------------------------
/matplotlib可视化饼图/output_8_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/matplotlib可视化饼图/output_8_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_10_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_10_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_12_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_12_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_14_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_14_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_16_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_16_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_18_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_18_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_20_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_20_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_22_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_22_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_24_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_24_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_26_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_26_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_28_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_28_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_30_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_30_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_32_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_32_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_34_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_34_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_36_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_36_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_38_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_38_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_40_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_40_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_42_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_42_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_44_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_44_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_46_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_46_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_48_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_48_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_4_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_4_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_50_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_50_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_52_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_52_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_54_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_54_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_56_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_56_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_58_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_58_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/output_8_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yang-jinchao/Matplotlib/5a960b8dcce13d81bcba6f57f5f127fd2f4f683a/样式美化matplotlib.pyplot.style.use定制画布风格/output_8_0.png
--------------------------------------------------------------------------------
/样式美化matplotlib.pyplot.style.use定制画布风格/样式美化matplotlib.pyplot.style.use定制画布风格.md:
--------------------------------------------------------------------------------
1 |
2 | # 导入绘图库和设置全局参数
3 |
4 |
5 | ```python
6 | import numpy as np
7 | import matplotlib.pyplot as plt
8 | ```
9 |
10 | # 样式美化(plt.style.use)定制画布风格
11 |
12 | ## 默认样式
13 |
14 |
15 | ```python
16 | # 正常显示中文字体
17 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
18 |
19 | # 生成一张12*4的图
20 | fig = plt.figure(figsize=(12,4))
21 |
22 | # 生成第一个子图在1行2列第一列位置
23 | ax1 = fig.add_subplot(121)
24 |
25 | # 生成第二子图在1行2列第二列位置
26 | ax2 = fig.add_subplot(122)
27 |
28 | # 柱状图数据
29 | x1 = [0.3, 1.7, 4, 6, 7]
30 | y1 = [5, 20, 15, 25, 10]
31 |
32 | # 折线图数据
33 | x2 = np.arange(0,10)
34 | y2 = [25,2,12,30,20,40,50,30,40,15]
35 |
36 | # 第一个子图绘图和设置
37 | ax1.bar(x1,y1)
38 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
39 |
40 | # 第二个子图绘图和设置
41 | ax2.plot(x2,y2)
42 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
43 |
44 | plt.show()
45 | ```
46 |
47 |
48 | 
49 |
50 |
51 | # 获取所有的自带样式
52 |
53 |
54 | ```python
55 | print(plt.style.available) # 打印一个列表
56 | ```
57 |
58 | ['bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark-palette', 'seaborn-dark', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'seaborn', 'Solarize_Light2', 'tableau-colorblind10', '_classic_test']
59 |
60 |
61 | # plt.style.use('bmh')
62 |
63 |
64 | ```python
65 | plt.style.use('bmh')
66 |
67 | # 正常显示中文字体
68 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
69 |
70 | # 生成一张12*4的图
71 | fig = plt.figure(figsize=(12,4))
72 |
73 | # 生成第一个子图在1行2列第一列位置
74 | ax1 = fig.add_subplot(121)
75 |
76 | # 生成第二子图在1行2列第二列位置
77 | ax2 = fig.add_subplot(122)
78 |
79 | # 柱状图数据
80 | x1 = [0.3, 1.7, 4, 6, 7]
81 | y1 = [5, 20, 15, 25, 10]
82 |
83 | # 折线图数据
84 | x2 = np.arange(0,10)
85 | y2 = [25,2,12,30,20,40,50,30,40,15]
86 |
87 | # 第一个子图绘图和设置
88 | ax1.bar(x1,y1)
89 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
90 |
91 | # 第二个子图绘图和设置
92 | ax2.plot(x2,y2)
93 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
94 |
95 | plt.show()
96 | ```
97 |
98 |
99 | 
100 |
101 |
102 | # plt.style.use('classic')
103 |
104 |
105 | ```python
106 | plt.style.use('classic')
107 |
108 | # 正常显示中文字体
109 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
110 |
111 | # 生成一张12*4的图
112 | fig = plt.figure(figsize=(12,4))
113 |
114 | # 生成第一个子图在1行2列第一列位置
115 | ax1 = fig.add_subplot(121)
116 |
117 | # 生成第二子图在1行2列第二列位置
118 | ax2 = fig.add_subplot(122)
119 |
120 | # 柱状图数据
121 | x1 = [0.3, 1.7, 4, 6, 7]
122 | y1 = [5, 20, 15, 25, 10]
123 |
124 | # 折线图数据
125 | x2 = np.arange(0,10)
126 | y2 = [25,2,12,30,20,40,50,30,40,15]
127 |
128 | # 第一个子图绘图和设置
129 | ax1.bar(x1,y1)
130 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
131 |
132 | # 第二个子图绘图和设置
133 | ax2.plot(x2,y2)
134 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
135 |
136 | plt.show()
137 | ```
138 |
139 |
140 | 
141 |
142 |
143 | # plt.style.use('dark_background')
144 |
145 |
146 | ```python
147 | plt.style.use('dark_background')
148 |
149 | # 正常显示中文字体
150 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
151 |
152 | # 生成一张12*4的图
153 | fig = plt.figure(figsize=(12,4))
154 |
155 | # 生成第一个子图在1行2列第一列位置
156 | ax1 = fig.add_subplot(121)
157 |
158 | # 生成第二子图在1行2列第二列位置
159 | ax2 = fig.add_subplot(122)
160 |
161 | # 柱状图数据
162 | x1 = [0.3, 1.7, 4, 6, 7]
163 | y1 = [5, 20, 15, 25, 10]
164 |
165 | # 折线图数据
166 | x2 = np.arange(0,10)
167 | y2 = [25,2,12,30,20,40,50,30,40,15]
168 |
169 | # 第一个子图绘图和设置
170 | ax1.bar(x1,y1)
171 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
172 |
173 | # 第二个子图绘图和设置
174 | ax2.plot(x2,y2)
175 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
176 |
177 | plt.show()
178 | ```
179 |
180 |
181 | 
182 |
183 |
184 | # plt.style.use('fast')
185 |
186 |
187 | ```python
188 | plt.style.use('fast')
189 |
190 | # 正常显示中文字体
191 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
192 |
193 | # 生成一张12*4的图
194 | fig = plt.figure(figsize=(12,4))
195 |
196 | # 生成第一个子图在1行2列第一列位置
197 | ax1 = fig.add_subplot(121)
198 |
199 | # 生成第二子图在1行2列第二列位置
200 | ax2 = fig.add_subplot(122)
201 |
202 | # 柱状图数据
203 | x1 = [0.3, 1.7, 4, 6, 7]
204 | y1 = [5, 20, 15, 25, 10]
205 |
206 | # 折线图数据
207 | x2 = np.arange(0,10)
208 | y2 = [25,2,12,30,20,40,50,30,40,15]
209 |
210 | # 第一个子图绘图和设置
211 | ax1.bar(x1,y1)
212 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
213 |
214 | # 第二个子图绘图和设置
215 | ax2.plot(x2,y2)
216 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
217 |
218 | plt.show()
219 | ```
220 |
221 |
222 | 
223 |
224 |
225 | # plt.style.use('fivethirtyeight')
226 |
227 |
228 | ```python
229 | plt.style.use('fivethirtyeight')
230 |
231 | # 正常显示中文字体
232 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
233 |
234 | # 生成一张12*4的图
235 | fig = plt.figure(figsize=(12,4))
236 |
237 | # 生成第一个子图在1行2列第一列位置
238 | ax1 = fig.add_subplot(121)
239 |
240 | # 生成第二子图在1行2列第二列位置
241 | ax2 = fig.add_subplot(122)
242 |
243 | # 柱状图数据
244 | x1 = [0.3, 1.7, 4, 6, 7]
245 | y1 = [5, 20, 15, 25, 10]
246 |
247 | # 折线图数据
248 | x2 = np.arange(0,10)
249 | y2 = [25,2,12,30,20,40,50,30,40,15]
250 |
251 | # 第一个子图绘图和设置
252 | ax1.bar(x1,y1)
253 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
254 |
255 | # 第二个子图绘图和设置
256 | ax2.plot(x2,y2)
257 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
258 |
259 | plt.show()
260 | ```
261 |
262 |
263 | 
264 |
265 |
266 | # plt.style.use('ggplot')
267 |
268 |
269 | ```python
270 | plt.style.use('ggplot')
271 |
272 | # 正常显示中文字体
273 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
274 |
275 | # 生成一张12*4的图
276 | fig = plt.figure(figsize=(12,4))
277 |
278 | # 生成第一个子图在1行2列第一列位置
279 | ax1 = fig.add_subplot(121)
280 |
281 | # 生成第二子图在1行2列第二列位置
282 | ax2 = fig.add_subplot(122)
283 |
284 | # 柱状图数据
285 | x1 = [0.3, 1.7, 4, 6, 7]
286 | y1 = [5, 20, 15, 25, 10]
287 |
288 | # 折线图数据
289 | x2 = np.arange(0,10)
290 | y2 = [25,2,12,30,20,40,50,30,40,15]
291 |
292 | # 第一个子图绘图和设置
293 | ax1.bar(x1,y1)
294 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
295 |
296 | # 第二个子图绘图和设置
297 | ax2.plot(x2,y2)
298 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
299 |
300 | plt.show()
301 | ```
302 |
303 |
304 | 
305 |
306 |
307 | # plt.style.use('grayscale')
308 |
309 |
310 | ```python
311 | plt.style.use('grayscale')
312 |
313 | # 正常显示中文字体
314 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
315 |
316 | # 生成一张12*4的图
317 | fig = plt.figure(figsize=(12,4))
318 |
319 | # 生成第一个子图在1行2列第一列位置
320 | ax1 = fig.add_subplot(121)
321 |
322 | # 生成第二子图在1行2列第二列位置
323 | ax2 = fig.add_subplot(122)
324 |
325 | # 柱状图数据
326 | x1 = [0.3, 1.7, 4, 6, 7]
327 | y1 = [5, 20, 15, 25, 10]
328 |
329 | # 折线图数据
330 | x2 = np.arange(0,10)
331 | y2 = [25,2,12,30,20,40,50,30,40,15]
332 |
333 | # 第一个子图绘图和设置
334 | ax1.bar(x1,y1)
335 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
336 |
337 | # 第二个子图绘图和设置
338 | ax2.plot(x2,y2)
339 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
340 |
341 | plt.show()
342 | ```
343 |
344 |
345 | 
346 |
347 |
348 | # plt.style.use('seaborn-bright')
349 |
350 |
351 | ```python
352 | plt.style.use('seaborn-bright')
353 |
354 | # 正常显示中文字体
355 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
356 |
357 | # 生成一张12*4的图
358 | fig = plt.figure(figsize=(12,4))
359 |
360 | # 生成第一个子图在1行2列第一列位置
361 | ax1 = fig.add_subplot(121)
362 |
363 | # 生成第二子图在1行2列第二列位置
364 | ax2 = fig.add_subplot(122)
365 |
366 | # 柱状图数据
367 | x1 = [0.3, 1.7, 4, 6, 7]
368 | y1 = [5, 20, 15, 25, 10]
369 |
370 | # 折线图数据
371 | x2 = np.arange(0,10)
372 | y2 = [25,2,12,30,20,40,50,30,40,15]
373 |
374 | # 第一个子图绘图和设置
375 | ax1.bar(x1,y1)
376 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
377 |
378 | # 第二个子图绘图和设置
379 | ax2.plot(x2,y2)
380 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
381 |
382 | plt.show()
383 | ```
384 |
385 |
386 | 
387 |
388 |
389 | # plt.style.use('seaborn-colorblind')
390 |
391 |
392 | ```python
393 | plt.style.use('seaborn-colorblind')
394 |
395 | # 正常显示中文字体
396 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
397 |
398 | # 生成一张12*4的图
399 | fig = plt.figure(figsize=(12,4))
400 |
401 | # 生成第一个子图在1行2列第一列位置
402 | ax1 = fig.add_subplot(121)
403 |
404 | # 生成第二子图在1行2列第二列位置
405 | ax2 = fig.add_subplot(122)
406 |
407 | # 柱状图数据
408 | x1 = [0.3, 1.7, 4, 6, 7]
409 | y1 = [5, 20, 15, 25, 10]
410 |
411 | # 折线图数据
412 | x2 = np.arange(0,10)
413 | y2 = [25,2,12,30,20,40,50,30,40,15]
414 |
415 | # 第一个子图绘图和设置
416 | ax1.bar(x1,y1)
417 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
418 |
419 | # 第二个子图绘图和设置
420 | ax2.plot(x2,y2)
421 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
422 |
423 | plt.show()
424 | ```
425 |
426 |
427 | 
428 |
429 |
430 | # plt.style.use('seaborn-dark-palette')
431 |
432 |
433 | ```python
434 | plt.style.use('seaborn-dark-palette')
435 |
436 | # 正常显示中文字体
437 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
438 |
439 | # 生成一张12*4的图
440 | fig = plt.figure(figsize=(12,4))
441 |
442 | # 生成第一个子图在1行2列第一列位置
443 | ax1 = fig.add_subplot(121)
444 |
445 | # 生成第二子图在1行2列第二列位置
446 | ax2 = fig.add_subplot(122)
447 |
448 | # 柱状图数据
449 | x1 = [0.3, 1.7, 4, 6, 7]
450 | y1 = [5, 20, 15, 25, 10]
451 |
452 | # 折线图数据
453 | x2 = np.arange(0,10)
454 | y2 = [25,2,12,30,20,40,50,30,40,15]
455 |
456 | # 第一个子图绘图和设置
457 | ax1.bar(x1,y1)
458 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
459 |
460 | # 第二个子图绘图和设置
461 | ax2.plot(x2,y2)
462 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
463 |
464 | plt.show()
465 | ```
466 |
467 |
468 | 
469 |
470 |
471 | # plt.style.use('seaborn-dark')
472 |
473 |
474 | ```python
475 | plt.style.use('seaborn-dark')
476 |
477 | # 正常显示中文字体
478 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
479 |
480 | # 生成一张12*4的图
481 | fig = plt.figure(figsize=(12,4))
482 |
483 | # 生成第一个子图在1行2列第一列位置
484 | ax1 = fig.add_subplot(121)
485 |
486 | # 生成第二子图在1行2列第二列位置
487 | ax2 = fig.add_subplot(122)
488 |
489 | # 柱状图数据
490 | x1 = [0.3, 1.7, 4, 6, 7]
491 | y1 = [5, 20, 15, 25, 10]
492 |
493 | # 折线图数据
494 | x2 = np.arange(0,10)
495 | y2 = [25,2,12,30,20,40,50,30,40,15]
496 |
497 | # 第一个子图绘图和设置
498 | ax1.bar(x1,y1)
499 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
500 |
501 | # 第二个子图绘图和设置
502 | ax2.plot(x2,y2)
503 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
504 |
505 | plt.show()
506 | ```
507 |
508 |
509 | 
510 |
511 |
512 | # plt.style.use('seaborn-darkgrid')
513 |
514 |
515 | ```python
516 | plt.style.use('seaborn-darkgrid')
517 |
518 | # 正常显示中文字体
519 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
520 |
521 | # 生成一张12*4的图
522 | fig = plt.figure(figsize=(12,4))
523 |
524 | # 生成第一个子图在1行2列第一列位置
525 | ax1 = fig.add_subplot(121)
526 |
527 | # 生成第二子图在1行2列第二列位置
528 | ax2 = fig.add_subplot(122)
529 |
530 | # 柱状图数据
531 | x1 = [0.3, 1.7, 4, 6, 7]
532 | y1 = [5, 20, 15, 25, 10]
533 |
534 | # 折线图数据
535 | x2 = np.arange(0,10)
536 | y2 = [25,2,12,30,20,40,50,30,40,15]
537 |
538 | # 第一个子图绘图和设置
539 | ax1.bar(x1,y1)
540 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
541 |
542 | # 第二个子图绘图和设置
543 | ax2.plot(x2,y2)
544 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
545 |
546 | plt.show()
547 | ```
548 |
549 |
550 | 
551 |
552 |
553 | # plt.style.use('seaborn-deep')
554 |
555 |
556 | ```python
557 | plt.style.use('seaborn-deep')
558 |
559 | # 正常显示中文字体
560 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
561 |
562 | # 生成一张12*4的图
563 | fig = plt.figure(figsize=(12,4))
564 |
565 | # 生成第一个子图在1行2列第一列位置
566 | ax1 = fig.add_subplot(121)
567 |
568 | # 生成第二子图在1行2列第二列位置
569 | ax2 = fig.add_subplot(122)
570 |
571 | # 柱状图数据
572 | x1 = [0.3, 1.7, 4, 6, 7]
573 | y1 = [5, 20, 15, 25, 10]
574 |
575 | # 折线图数据
576 | x2 = np.arange(0,10)
577 | y2 = [25,2,12,30,20,40,50,30,40,15]
578 |
579 | # 第一个子图绘图和设置
580 | ax1.bar(x1,y1)
581 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
582 |
583 | # 第二个子图绘图和设置
584 | ax2.plot(x2,y2)
585 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
586 |
587 | plt.show()
588 | ```
589 |
590 |
591 | 
592 |
593 |
594 | # plt.style.use('seaborn-muted')
595 |
596 |
597 | ```python
598 | plt.style.use('seaborn-muted')
599 |
600 | # 正常显示中文字体
601 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
602 |
603 | # 生成一张12*4的图
604 | fig = plt.figure(figsize=(12,4))
605 |
606 | # 生成第一个子图在1行2列第一列位置
607 | ax1 = fig.add_subplot(121)
608 |
609 | # 生成第二子图在1行2列第二列位置
610 | ax2 = fig.add_subplot(122)
611 |
612 | # 柱状图数据
613 | x1 = [0.3, 1.7, 4, 6, 7]
614 | y1 = [5, 20, 15, 25, 10]
615 |
616 | # 折线图数据
617 | x2 = np.arange(0,10)
618 | y2 = [25,2,12,30,20,40,50,30,40,15]
619 |
620 | # 第一个子图绘图和设置
621 | ax1.bar(x1,y1)
622 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
623 |
624 | # 第二个子图绘图和设置
625 | ax2.plot(x2,y2)
626 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
627 |
628 | plt.show()
629 | ```
630 |
631 |
632 | 
633 |
634 |
635 | # plt.style.use('seaborn-notebook')
636 |
637 |
638 | ```python
639 | plt.style.use('seaborn-notebook')
640 |
641 | # 正常显示中文字体
642 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
643 |
644 | # 生成一张12*4的图
645 | fig = plt.figure(figsize=(12,4))
646 |
647 | # 生成第一个子图在1行2列第一列位置
648 | ax1 = fig.add_subplot(121)
649 |
650 | # 生成第二子图在1行2列第二列位置
651 | ax2 = fig.add_subplot(122)
652 |
653 | # 柱状图数据
654 | x1 = [0.3, 1.7, 4, 6, 7]
655 | y1 = [5, 20, 15, 25, 10]
656 |
657 | # 折线图数据
658 | x2 = np.arange(0,10)
659 | y2 = [25,2,12,30,20,40,50,30,40,15]
660 |
661 | # 第一个子图绘图和设置
662 | ax1.bar(x1,y1)
663 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
664 |
665 | # 第二个子图绘图和设置
666 | ax2.plot(x2,y2)
667 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
668 |
669 | plt.show()
670 | ```
671 |
672 |
673 | 
674 |
675 |
676 | # plt.style.use('seaborn-paper')
677 |
678 |
679 | ```python
680 | plt.style.use('seaborn-paper')
681 |
682 | # 正常显示中文字体
683 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
684 |
685 | # 生成一张12*4的图
686 | fig = plt.figure(figsize=(12,4))
687 |
688 | # 生成第一个子图在1行2列第一列位置
689 | ax1 = fig.add_subplot(121)
690 |
691 | # 生成第二子图在1行2列第二列位置
692 | ax2 = fig.add_subplot(122)
693 |
694 | # 柱状图数据
695 | x1 = [0.3, 1.7, 4, 6, 7]
696 | y1 = [5, 20, 15, 25, 10]
697 |
698 | # 折线图数据
699 | x2 = np.arange(0,10)
700 | y2 = [25,2,12,30,20,40,50,30,40,15]
701 |
702 | # 第一个子图绘图和设置
703 | ax1.bar(x1,y1)
704 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
705 |
706 | # 第二个子图绘图和设置
707 | ax2.plot(x2,y2)
708 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
709 |
710 | plt.show()
711 | ```
712 |
713 |
714 | 
715 |
716 |
717 | # plt.style.use('seaborn-pastel')
718 |
719 |
720 | ```python
721 | plt.style.use('seaborn-pastel')
722 |
723 | # 正常显示中文字体
724 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
725 |
726 | # 生成一张12*4的图
727 | fig = plt.figure(figsize=(12,4))
728 |
729 | # 生成第一个子图在1行2列第一列位置
730 | ax1 = fig.add_subplot(121)
731 |
732 | # 生成第二子图在1行2列第二列位置
733 | ax2 = fig.add_subplot(122)
734 |
735 | # 柱状图数据
736 | x1 = [0.3, 1.7, 4, 6, 7]
737 | y1 = [5, 20, 15, 25, 10]
738 |
739 | # 折线图数据
740 | x2 = np.arange(0,10)
741 | y2 = [25,2,12,30,20,40,50,30,40,15]
742 |
743 | # 第一个子图绘图和设置
744 | ax1.bar(x1,y1)
745 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
746 |
747 | # 第二个子图绘图和设置
748 | ax2.plot(x2,y2)
749 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
750 |
751 | plt.show()
752 | ```
753 |
754 |
755 | 
756 |
757 |
758 | # plt.style.use('seaborn-poster')
759 |
760 |
761 | ```python
762 | plt.style.use('seaborn-poster')
763 |
764 | # 正常显示中文字体
765 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
766 |
767 | # 生成一张12*4的图
768 | fig = plt.figure(figsize=(12,4))
769 |
770 | # 生成第一个子图在1行2列第一列位置
771 | ax1 = fig.add_subplot(121)
772 |
773 | # 生成第二子图在1行2列第二列位置
774 | ax2 = fig.add_subplot(122)
775 |
776 | # 柱状图数据
777 | x1 = [0.3, 1.7, 4, 6, 7]
778 | y1 = [5, 20, 15, 25, 10]
779 |
780 | # 折线图数据
781 | x2 = np.arange(0,10)
782 | y2 = [25,2,12,30,20,40,50,30,40,15]
783 |
784 | # 第一个子图绘图和设置
785 | ax1.bar(x1,y1)
786 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
787 |
788 | # 第二个子图绘图和设置
789 | ax2.plot(x2,y2)
790 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
791 |
792 | plt.show()
793 | ```
794 |
795 |
796 | 
797 |
798 |
799 | # plt.style.use('seaborn-talk')
800 |
801 |
802 | ```python
803 | plt.style.use('seaborn-talk')
804 |
805 | # 正常显示中文字体
806 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
807 |
808 | # 生成一张12*4的图
809 | fig = plt.figure(figsize=(12,4))
810 |
811 | # 生成第一个子图在1行2列第一列位置
812 | ax1 = fig.add_subplot(121)
813 |
814 | # 生成第二子图在1行2列第二列位置
815 | ax2 = fig.add_subplot(122)
816 |
817 | # 柱状图数据
818 | x1 = [0.3, 1.7, 4, 6, 7]
819 | y1 = [5, 20, 15, 25, 10]
820 |
821 | # 折线图数据
822 | x2 = np.arange(0,10)
823 | y2 = [25,2,12,30,20,40,50,30,40,15]
824 |
825 | # 第一个子图绘图和设置
826 | ax1.bar(x1,y1)
827 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
828 |
829 | # 第二个子图绘图和设置
830 | ax2.plot(x2,y2)
831 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
832 |
833 | plt.show()
834 | ```
835 |
836 |
837 | 
838 |
839 |
840 | # plt.style.use('seaborn-ticks')
841 |
842 |
843 | ```python
844 | plt.style.use('seaborn-ticks')
845 |
846 | # 正常显示中文字体
847 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
848 |
849 | # 生成一张12*4的图
850 | fig = plt.figure(figsize=(12,4))
851 |
852 | # 生成第一个子图在1行2列第一列位置
853 | ax1 = fig.add_subplot(121)
854 |
855 | # 生成第二子图在1行2列第二列位置
856 | ax2 = fig.add_subplot(122)
857 |
858 | # 柱状图数据
859 | x1 = [0.3, 1.7, 4, 6, 7]
860 | y1 = [5, 20, 15, 25, 10]
861 |
862 | # 折线图数据
863 | x2 = np.arange(0,10)
864 | y2 = [25,2,12,30,20,40,50,30,40,15]
865 |
866 | # 第一个子图绘图和设置
867 | ax1.bar(x1,y1)
868 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
869 |
870 | # 第二个子图绘图和设置
871 | ax2.plot(x2,y2)
872 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
873 |
874 | plt.show()
875 | ```
876 |
877 |
878 | 
879 |
880 |
881 | # plt.style.use('seaborn-white')
882 |
883 |
884 | ```python
885 | plt.style.use('seaborn-white')
886 |
887 | # 正常显示中文字体
888 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
889 |
890 | # 生成一张12*4的图
891 | fig = plt.figure(figsize=(12,4))
892 |
893 | # 生成第一个子图在1行2列第一列位置
894 | ax1 = fig.add_subplot(121)
895 |
896 | # 生成第二子图在1行2列第二列位置
897 | ax2 = fig.add_subplot(122)
898 |
899 | # 柱状图数据
900 | x1 = [0.3, 1.7, 4, 6, 7]
901 | y1 = [5, 20, 15, 25, 10]
902 |
903 | # 折线图数据
904 | x2 = np.arange(0,10)
905 | y2 = [25,2,12,30,20,40,50,30,40,15]
906 |
907 | # 第一个子图绘图和设置
908 | ax1.bar(x1,y1)
909 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
910 |
911 | # 第二个子图绘图和设置
912 | ax2.plot(x2,y2)
913 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
914 |
915 | plt.show()
916 | ```
917 |
918 |
919 | 
920 |
921 |
922 | # plt.style.use('seaborn-whitegrid')
923 |
924 |
925 | ```python
926 | plt.style.use('seaborn-whitegrid')
927 |
928 | # 正常显示中文字体
929 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
930 |
931 | # 生成一张12*4的图
932 | fig = plt.figure(figsize=(12,4))
933 |
934 | # 生成第一个子图在1行2列第一列位置
935 | ax1 = fig.add_subplot(121)
936 |
937 | # 生成第二子图在1行2列第二列位置
938 | ax2 = fig.add_subplot(122)
939 |
940 | # 柱状图数据
941 | x1 = [0.3, 1.7, 4, 6, 7]
942 | y1 = [5, 20, 15, 25, 10]
943 |
944 | # 折线图数据
945 | x2 = np.arange(0,10)
946 | y2 = [25,2,12,30,20,40,50,30,40,15]
947 |
948 | # 第一个子图绘图和设置
949 | ax1.bar(x1,y1)
950 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
951 |
952 | # 第二个子图绘图和设置
953 | ax2.plot(x2,y2)
954 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
955 |
956 | plt.show()
957 | ```
958 |
959 |
960 | 
961 |
962 |
963 | # plt.style.use('seaborn')
964 |
965 |
966 | ```python
967 | plt.style.use('seaborn')
968 |
969 | # 正常显示中文字体
970 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
971 |
972 | # 生成一张12*4的图
973 | fig = plt.figure(figsize=(12,4))
974 |
975 | # 生成第一个子图在1行2列第一列位置
976 | ax1 = fig.add_subplot(121)
977 |
978 | # 生成第二子图在1行2列第二列位置
979 | ax2 = fig.add_subplot(122)
980 |
981 | # 柱状图数据
982 | x1 = [0.3, 1.7, 4, 6, 7]
983 | y1 = [5, 20, 15, 25, 10]
984 |
985 | # 折线图数据
986 | x2 = np.arange(0,10)
987 | y2 = [25,2,12,30,20,40,50,30,40,15]
988 |
989 | # 第一个子图绘图和设置
990 | ax1.bar(x1,y1)
991 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
992 |
993 | # 第二个子图绘图和设置
994 | ax2.plot(x2,y2)
995 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
996 |
997 | plt.show()
998 | ```
999 |
1000 |
1001 | 
1002 |
1003 |
1004 | # plt.style.use('Solarize_Light2')
1005 |
1006 |
1007 | ```python
1008 | plt.style.use('Solarize_Light2')
1009 |
1010 | # 正常显示中文字体
1011 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
1012 |
1013 | # 生成一张12*4的图
1014 | fig = plt.figure(figsize=(12,4))
1015 |
1016 | # 生成第一个子图在1行2列第一列位置
1017 | ax1 = fig.add_subplot(121)
1018 |
1019 | # 生成第二子图在1行2列第二列位置
1020 | ax2 = fig.add_subplot(122)
1021 |
1022 | # 柱状图数据
1023 | x1 = [0.3, 1.7, 4, 6, 7]
1024 | y1 = [5, 20, 15, 25, 10]
1025 |
1026 | # 折线图数据
1027 | x2 = np.arange(0,10)
1028 | y2 = [25,2,12,30,20,40,50,30,40,15]
1029 |
1030 | # 第一个子图绘图和设置
1031 | ax1.bar(x1,y1)
1032 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
1033 |
1034 | # 第二个子图绘图和设置
1035 | ax2.plot(x2,y2)
1036 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
1037 |
1038 | plt.show()
1039 | ```
1040 |
1041 |
1042 | 
1043 |
1044 |
1045 | # plt.style.use('tableau-colorblind10')
1046 |
1047 |
1048 | ```python
1049 | plt.style.use('tableau-colorblind10')
1050 |
1051 | # 正常显示中文字体
1052 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
1053 |
1054 | # 生成一张12*4的图
1055 | fig = plt.figure(figsize=(12,4))
1056 |
1057 | # 生成第一个子图在1行2列第一列位置
1058 | ax1 = fig.add_subplot(121)
1059 |
1060 | # 生成第二子图在1行2列第二列位置
1061 | ax2 = fig.add_subplot(122)
1062 |
1063 | # 柱状图数据
1064 | x1 = [0.3, 1.7, 4, 6, 7]
1065 | y1 = [5, 20, 15, 25, 10]
1066 |
1067 | # 折线图数据
1068 | x2 = np.arange(0,10)
1069 | y2 = [25,2,12,30,20,40,50,30,40,15]
1070 |
1071 | # 第一个子图绘图和设置
1072 | ax1.bar(x1,y1)
1073 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
1074 |
1075 | # 第二个子图绘图和设置
1076 | ax2.plot(x2,y2)
1077 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
1078 |
1079 | plt.show()
1080 | ```
1081 |
1082 |
1083 | 
1084 |
1085 |
1086 | # plt.style.use('_classic_test')
1087 |
1088 |
1089 | ```python
1090 | plt.style.use('_classic_test')
1091 |
1092 | # 正常显示中文字体
1093 | plt.rcParams['font.sans-serif']=['Microsoft YaHei']
1094 |
1095 | # 生成一张12*4的图
1096 | fig = plt.figure(figsize=(12,4))
1097 |
1098 | # 生成第一个子图在1行2列第一列位置
1099 | ax1 = fig.add_subplot(121)
1100 |
1101 | # 生成第二子图在1行2列第二列位置
1102 | ax2 = fig.add_subplot(122)
1103 |
1104 | # 柱状图数据
1105 | x1 = [0.3, 1.7, 4, 6, 7]
1106 | y1 = [5, 20, 15, 25, 10]
1107 |
1108 | # 折线图数据
1109 | x2 = np.arange(0,10)
1110 | y2 = [25,2,12,30,20,40,50,30,40,15]
1111 |
1112 | # 第一个子图绘图和设置
1113 | ax1.bar(x1,y1)
1114 | ax1.set(xlabel='横坐标',ylabel='纵坐标',title='我在第一列位置')
1115 |
1116 | # 第二个子图绘图和设置
1117 | ax2.plot(x2,y2)
1118 | ax2.set(xlabel='横坐标',ylabel='纵坐标',title='我在第二列位置')
1119 |
1120 | plt.show()
1121 | ```
1122 |
1123 |
1124 | 
1125 |
1126 |
1127 | ## 绘图选一种自己喜欢的样式画布风格,用两张子图分别绘一个柱状图和折线图来做对比。
1128 |
--------------------------------------------------------------------------------