├── 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 | ![png](output_5_0.png) 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 | ![png](output_7_0.png) 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 | ![png](output_10_0.png) 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 | ![png](output_12_0.png) 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 | ![png](output_14_0.png) 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 | ![png](output_16_0.png) 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 | ![png](output_18_0.png) 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 | ![png](output_21_0.png) 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 | ![png](output_23_0.png) 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 | ![png](output_24_0.png) 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 | ![png](output_3_0.png) 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 | ![png](output_5_0.png) 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 | ![png](output_7_0.png) 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 | ![png](output_8_0.png) 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 | ![png](output_10_0.png) 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 | ![png](output_11_0.png) 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 | ![png](output_4_0.png) 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 | ![png](output_5_0.png) 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 | ![png](output_6_0.png) 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 | ![png](output_7_0.png) 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 | ![png](output_5_0.png) 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 | ![png](output_7_0.png) 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 | ![png](output_9_0.png) 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 | ![png](output_11_0.png) 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 | ![png](output_13_0.png) 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 | ![png](output_15_0.png) 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 | ![png](output_18_0.png) 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 | ![png](output_20_0.png) 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 | ![png](output_22_0.png) 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 | ![png](output_24_0.png) 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 | ![png](output_29_0.png) 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 | ![png](output_35_0.png) 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": "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\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 | ![png](output_2_0.png) 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 | ![png](output_4_1.png) 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 | ![png](output_7_0.png) 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 | ![png](output_9_0.png) 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 | ![png](output_11_0.png) 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 | ![png](output_2_0.png) 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 | ![png](output_5_0.png) 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 | ![png](output_7_0.png) 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 | ![png](output_9_0.png) 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 | ![png](output_10_0.png) 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 | ![png](output_11_0.png) 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 | ![png](output_12_0.png) 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 | ![png](output_4_0.png) 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 | ![png](output_6_0.png) 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 | ![png](output_8_0.png) 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 | ![png](output_10_0.png) 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 | ![png](output_12_0.png) 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 | ![png](output_14_0.png) 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 | ![png](output_16_0.png) 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 | ![png](output_18_0.png) 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 | ![png](output_20_0.png) 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 | ![png](output_23_0.png) 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 | ![png](output_4_0.png) 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 | ![png](output_8_0.png) 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 | ![png](output_10_0.png) 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 | ![png](output_12_0.png) 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 | ![png](output_14_0.png) 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 | ![png](output_16_0.png) 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 | ![png](output_18_0.png) 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 | ![png](output_20_0.png) 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 | ![png](output_22_0.png) 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 | ![png](output_24_0.png) 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 | ![png](output_26_0.png) 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 | ![png](output_28_0.png) 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 | ![png](output_30_0.png) 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 | ![png](output_32_0.png) 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 | ![png](output_34_0.png) 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 | ![png](output_36_0.png) 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 | ![png](output_38_0.png) 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 | ![png](output_40_0.png) 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 | ![png](output_42_0.png) 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 | ![png](output_44_0.png) 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 | ![png](output_46_0.png) 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 | ![png](output_48_0.png) 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 | ![png](output_50_0.png) 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 | ![png](output_52_0.png) 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 | ![png](output_54_0.png) 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 | ![png](output_56_0.png) 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 | ![png](output_58_0.png) 1125 | 1126 | 1127 | ## 绘图选一种自己喜欢的样式画布风格,用两张子图分别绘一个柱状图和折线图来做对比。 1128 | --------------------------------------------------------------------------------