<div class="._5ce-wx-style" style="font-size:16px;">
<div class="rich_media_content" id="js_content">
<p>点击上方“Python编程时光”,选择“加为星标”</p>
<p>第一时间关注Python技术干货!</p>
<p><img alt="68c7e840804788bb1091eba9fa62b401.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-3379ea3f0a0c987123a406a1afd84815.png"></p>
<p>Matplotlib 是 Python 的绘图库。它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案,也可以和图形工具包一起使用。和Pandas、Numpy并成为数据分析三兄弟(我自己想的)。</p>
<p>虽然相比之前介绍过的其他图形库(Seaborn | pyecharts | plotly | bokeh | pandas_profiling )这个库丑丑呆呆的,甚至有点难用,但人家毕竟是开山始祖,方法全,能够支持你各类骚操作的需求。可以说是现在python数据分析中,用的人最多的图形库了。</p>
<p><img alt="ac037818ff030882b82c0c944f49ff45.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-c2aff53389215089da3f331d7cf001b8.png"></p>
<h2><span style="font-weight:bold;">一、导入</span></h2>
<p>1.导入matplotlib库简写为plt</p>
<pre class="blockcode"><code>import matplotlib.pyplot as plt<br></code></pre>
<h2><span style="font-weight:bold;">二、基本图表</span></h2>
<p>2.用plot方法画出x=(0,10)间sin的图像</p>
<pre class="blockcode"><code>x = np.linspace(0, 10, 30)<br>plt.plot(x, np.sin(x));<br></code></pre>
<p>3.用点加线的方式画出x=(0,10)间sin的图像</p>
<pre class="blockcode"><code>plt.plot(x, np.sin(x), '-o');<br></code></pre>
<p>4.用scatter方法画出x=(0,10)间sin的点图像</p>
<pre class="blockcode"><code>plt.scatter(x, np.sin(x));<br></code></pre>
<p>5.用饼图的面积及颜色展示一组4维数据</p>
<pre class="blockcode"><code>rng = np.random.RandomState(0)<br>x = rng.randn(100)<br>y = rng.randn(100)<br>colors = rng.rand(100)<br>sizes = 1000 * rng.rand(100)<br><br>plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,<br> cmap='viridis')<br>plt.colorbar(); # 展示色阶<br></code></pre>
<p>6.绘制一组误差为±0.8的数据的误差条图</p>
<pre class="blockcode"><code>x = np.linspace(0, 10, 50)<br>dy = 0.8<br>y = np.sin(x) + dy * np.random.randn(50)<br><br>plt.errorbar(x, y, yerr=dy, fmt='.k')<br></code></pre>
<p>7.绘制一个柱状图</p>
<pre class="blockcode"><code>x = [1,2,3,4,5,6,7,8]<br>y = [3,1,4,5,8,9,7,2]<br>label=['A','B','C','D','E','F','G','H']<br><br>plt.bar(x,y,tick_label = label);<br></code></pre>
<p>8.绘制一个水平方向柱状图</p>
<pre class="blockcode"><code>plt.barh(x,y,tick_label = label);<br></code></pre>
<p>9.绘制1000个随机值的直方图</p>
<pre class="blockcode"><code>data = np.random.randn(1000)<br>plt.hist(data);<br></code></pre>
<p>10.设置直方图分30个bins,并设置为频率分布</p>
<pre class="blockcode"><code>plt.hist(data, bins=30,histtype='stepfilled', density=True)<br>plt.show();<br></code></pre>
<p>11.在一张图中绘制3组不同的直方图,并设置透明度</p>
<pre class="blockcode"><code>x1 = np.random.normal(0, 0.8, 1000)<br>x2 = np.random.normal(-2, 1, 1000)<br>x3 = np.random.normal(3, 2, 1000)<br><br>kwargs = dict(alpha=0.3, bins=40, density = True)<br><br>plt.hist(x1, **kwargs);<br>plt.hist(x2, **kwargs);<br>plt.hist(x3, **kwargs);<br></code></pre>
<p>12.绘制一张二维直方图</p>
<pre class="blockcode"><code>mean = [0, 0]<br>cov = [[1, 1], [1, 2]]<br>x, y = np.random.multivariate_normal(mean, cov, 10000).T<br>plt.hist2d(x, y, bins=30);<br></code></pre>
<p>13.绘制一张设置网格大小为30的六角形直方图</p>
<pre class="blockcode"><code>plt.hexbin(x, y, gridsize=30);<br></code></pre>
<h2><span style="font-weight:bold;">三、自定义图表元素</span></h2>
<p>14.绘制x=(0,10)间sin的图像,设置线性为虚线</p>
<pre class="blockcode"><code>x = np.linspace(0,10,100)<br>plt.plot(x,np.sin(x),'--');<br></code></pre>
<p>15设置y轴显示范围为(-1.5,1.5)</p>
<pre class="blockcode"><code>x = np.linspace(0,10,100)<br>plt.plot(x, np.sin(x))<br>plt.ylim(-1.5, 1.5);<br></code></pre>
<p>16.设置x,y轴标签variable x,value y</p>
<pre class="blockcode"><code>x = np.linspace(0.05, 10, 100)<br>y = np.sin(x)<br>plt.plot(x, y, label='sin(x)')<br>plt.xlabel('variable x');<br>plt.ylabel('value y');<br></code></pre>
<p>17.设置图表标题“三角函数”</p>
<pre class="blockcode"><code>x = np.linspace(0.05, 10, 100)<br>y = np.sin(x)<br>plt.plot(x, y, label='sin(x)')<br>plt.title('三角函数');<br></code></pre>
<p>18.显示网格</p>
<pre class="blockcode"><code>x = np.linspace(0.05, 10, 100)<br>y = np.sin(x)<br>plt.plot(x, y)<br>plt.grid()<br></code></pre>
<p>19.绘制平行于x轴y=0.8的水平参考线</p>
<pre class="blockcode"><code>x = np.linspace(0.05, 10, 100)<br>y  |
|