This commit is contained in:
skywateryang 2022-01-02 15:31:30 +08:00
parent 8e18e9c7a1
commit a86fa9ce8a
34 changed files with 794 additions and 438 deletions

View File

@ -32,7 +32,6 @@ Matplotlib可以说是python数据可视化最重要且常见的工具之一
- 使用前请将matplotlib升级到最新版本V3.3.3(2020年12月),否则可能会出现报错!
- 本教程独立网站已上线:[https://datawhalechina.github.io/fantastic-matplotlib/](https://datawhalechina.github.io/fantastic-matplotlib/)
- 本教程pdf版本已在仓库更新[https://github.com/datawhalechina/fantastic-matplotlib/blob/main/fantastic-matplotlib.pdf](https://github.com/datawhalechina/fantastic-matplotlib/blob/main/fantastic-matplotlib.pdf)
- 使用时若发现任何问题,或是你对项目内容有好的建议,欢迎留言交流

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/_images/index_15_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -10,7 +10,6 @@ kernelspec:
# 第三回:布局格式定方圆
```{code-cell} ipython3
import numpy as np
import pandas as pd
@ -23,7 +22,7 @@ plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
### 1. 使用 `plt.subplots` 绘制均匀状态下的子图
返回元素分别是画布和子图构成的列表,第一个数字为行,第二个为列
返回元素分别是画布和子图构成的列表,第一个数字为行,第二个为列不传入时默认值都为1
`figsize` 参数可以指定整个画布的大小
@ -47,8 +46,34 @@ fig.tight_layout()
```
`subplots`是基于OO模式的写法显式创建一个或多个axes对象然后在对应的子图对象上进行绘图操作。
还有种方式是使用`subplot`这样基于pyplot模式的写法每次在指定位置新建一个子图并且之后的绘图操作都会指向当前子图本质上`subplot`也是`Figure.add_subplot`的一种封装。
在调用`subplot`时一般需要传入三位数字分别代表总行数总列数当前子图的index
```{code-cell} ipython3
plt.figure()
# 子图1
plt.subplot(2,2,1)
plt.plot([1,2], 'r')
# 子图2
plt.subplot(2,2,2)
plt.plot([1,2], 'b')
#子图3
plt.subplot(224) # 当三位数都小于10时可以省略中间的逗号这行命令等价于plt.subplot(2,2,4)
plt.plot([1,2], 'g');
```
除了常规的直角坐标系,也可以通过`projection`方法创建极坐标系下的图表
@ -66,6 +91,11 @@ plt.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75);
```
```{admonition} 练一练
<p>请思考如何用极坐标系画出类似的玫瑰图</p>
<img src="http://www.hinews.cn/news/pic/003/205/569/00320556959_f01764d0.jpg" width="300" align="bottom" />
```
@ -92,7 +122,9 @@ fig.tight_layout()
```
在上面的例子中出现了 `spec[i, j]` 的用法,事实上通过切片就可以实现子图的合并而达到跨图的共能
@ -121,39 +153,14 @@ fig.tight_layout()
```
## 二、子图上的方法
在 `ax` 对象上定义了和 `plt` 类似的图形绘制函数,常用的有: `plot, hist, scatter, bar, barh, pie`
```{code-cell} ipython3
fig, ax = plt.subplots(figsize=(4,3))
ax.plot([1,2],[2,1]);
```
```{code-cell} ipython3
fig, ax = plt.subplots(figsize=(4,3))
ax.hist(np.random.randn(1000));
```
补充介绍一些子图上的方法
常用直线的画法为: `axhline, axvline, axline` (水平、垂直、任意方向)
@ -166,91 +173,64 @@ ax.axline([0.3,0.3],[0.7,0.7]);
```
使用 `grid` 可以加灰色网格
```{code-cell} ipython3
fig, ax = plt.subplots(figsize=(4,3))
ax.grid(True)
```
使用 `set_xscale, set_title, set_xlabel` 分别可以设置坐标轴的规度(指对数坐标等)、标题、轴名
使用 `set_xscale` 可以设置坐标轴的规度(指对数坐标等)
```{code-cell} ipython3
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
fig.suptitle('大标题', size=20)
for j in range(2):
axs[j].plot(list('abcd'), [10**i for i in range(4)])
if j==0:
axs[j].set_yscale('log')
axs[j].set_title('子标题1')
axs[j].set_ylabel('对数坐标')
else:
axs[j].set_title('子标题1')
axs[j].set_ylabel('普通坐标')
pass
fig.tight_layout()
```
## 思考题
- 墨尔本1981年至1990年的每月温度情况
数据集来自github仓库下data/layout_ex1.csv
请利用数据,画出如下的图:
<img src="https://s1.ax1x.com/2020/11/01/BwvCse.png" width="800" align="bottom" />
与一般的 `plt` 方法类似, `legend, annotate, arrow, text` 对象也可以进行相应的绘制
- 画出数据的散点图和边际分布
用 `np.random.randn(2, 150)` 生成一组二维数据,使用两种非均匀子图的分割方法,做出该数据对应的散点图和边际分布图
```{code-cell} ipython3
fig, ax = plt.subplots()
ax.arrow(0, 0, 1, 1, head_width=0.03, head_length=0.05, facecolor='red', edgecolor='blue')
ax.text(x=0, y=0,s='这是一段文字', fontsize=16, rotation=70, rotation_mode='anchor', color='green')
ax.annotate('这是中点', xy=(0.5, 0.5), xytext=(0.8, 0.2), arrowprops=dict(facecolor='yellow', edgecolor='black'), fontsize=16);
```
<img src="https://s1.ax1x.com/2020/11/01/B0pEnS.png" width="400" height="400" align="bottom" />
```{code-cell} ipython3
fig, ax = plt.subplots()
ax.plot([1,2],[2,1],label="line1")
ax.plot([1,1],[1,2],label="line1")
ax.legend(loc=1);
```
其中,图例的 `loc` 参数如下:
| string | code |
| ---- | ---- |
| best | 0 |
| upper right | 1 |
| upper left | 2 |
| lower left | 3 |
| lower right | 4 |
| right | 5 |
| center left | 6 |
| center right | 7 |
| lower center | 8 |
| upper center | 9 |
| center | 10 |
## 参考资料
[1.matplotlib官网布局使用指南](https://matplotlib.org/stable/tutorials/intermediate/gridspec.html#sphx-glr-tutorials-intermediate-gridspec-py)

View File

@ -211,7 +211,7 @@
<li class="toctree-l1"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html">第三回:布局格式定方圆</a><ul>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html#id2">一、子图</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html#id3">二、子图上的方法</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html#id4">参考资料</a></li>
<li class="toctree-l2"><a class="reference internal" href="%E7%AC%AC%E4%B8%89%E5%9B%9E%EF%BC%9A%E5%B8%83%E5%B1%80%E6%A0%BC%E5%BC%8F%E5%AE%9A%E6%96%B9%E5%9C%86/index.html#id4">思考题</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="%E7%AC%AC%E5%9B%9B%E5%9B%9E%EF%BC%9A%E6%96%87%E5%AD%97%E5%9B%BE%E4%BE%8B%E5%B0%BD%E7%9C%89%E7%9B%AE/index.html">第四回:文字图例尽眉目</a><ul>

File diff suppressed because one or more lines are too long

View File

@ -222,7 +222,7 @@
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#id4">
参考资料
思考题
</a>
</li>
</ul>
@ -253,7 +253,7 @@
<h2>一、子图<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<div class="section" id="plt-subplots">
<h3>1. 使用 <code class="docutils literal notranslate"><span class="pre">plt.subplots</span></code> 绘制均匀状态下的子图<a class="headerlink" href="#plt-subplots" title="永久链接至标题"></a></h3>
<p>返回元素分别是画布和子图构成的列表,第一个数字为行,第二个为列</p>
<p>返回元素分别是画布和子图构成的列表,第一个数字为行,第二个为列不传入时默认值都为1</p>
<p><code class="docutils literal notranslate"><span class="pre">figsize</span></code> 参数可以指定整个画布的大小</p>
<p><code class="docutils literal notranslate"><span class="pre">sharex</span></code><code class="docutils literal notranslate"><span class="pre">sharey</span></code> 分别表示是否共享横轴和纵轴刻度</p>
<p><code class="docutils literal notranslate"><span class="pre">tight_layout</span></code> 函数可以调整子图的相对大小使字符不会重叠</p>
@ -277,6 +277,32 @@
<img alt="../_images/index_3_0.png" src="../_images/index_3_0.png" />
</div>
</div>
<p><br />
</p>
<p><code class="docutils literal notranslate"><span class="pre">subplots</span></code>是基于OO模式的写法显式创建一个或多个axes对象然后在对应的子图对象上进行绘图操作。<br />
还有种方式是使用<code class="docutils literal notranslate"><span class="pre">subplot</span></code>这样基于pyplot模式的写法每次在指定位置新建一个子图并且之后的绘图操作都会指向当前子图本质上<code class="docutils literal notranslate"><span class="pre">subplot</span></code>也是<code class="docutils literal notranslate"><span class="pre">Figure.add_subplot</span></code>的一种封装。</p>
<p>在调用<code class="docutils literal notranslate"><span class="pre">subplot</span></code>时一般需要传入三位数字分别代表总行数总列数当前子图的index</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="c1"># 子图1</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
<span class="c1"># 子图2</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="s1">&#39;b&#39;</span><span class="p">)</span>
<span class="c1">#子图3</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">224</span><span class="p">)</span> <span class="c1"># 当三位数都小于10时可以省略中间的逗号这行命令等价于plt.subplot(2,2,4) </span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="s1">&#39;g&#39;</span><span class="p">);</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_5_0.png" src="../_images/index_5_0.png" />
</div>
</div>
<p></p>
<p></p>
<p>除了常规的直角坐标系,也可以通过<code class="docutils literal notranslate"><span class="pre">projection</span></code>方法创建极坐标系下的图表</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
@ -293,9 +319,14 @@
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_5_0.png" src="../_images/index_5_0.png" />
<img alt="../_images/index_7_0.png" src="../_images/index_7_0.png" />
</div>
</div>
<div class="admonition- admonition">
<p class="admonition-title">练一练</p>
<p>请思考如何用极坐标系画出类似的玫瑰图</p>
<img src="http://www.hinews.cn/news/pic/003/205/569/00320556959_f01764d0.jpg" width="300" align="bottom" />
</div>
</div>
<div class="section" id="gridspec">
<h3>2. 使用 <code class="docutils literal notranslate"><span class="pre">GridSpec</span></code> 绘制非均匀子图<a class="headerlink" href="#gridspec" title="永久链接至标题"></a></h3>
@ -318,9 +349,11 @@
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_7_0.png" src="../_images/index_7_0.png" />
<img alt="../_images/index_9_0.png" src="../_images/index_9_0.png" />
</div>
</div>
<p></p>
<p></p>
<p>在上面的例子中出现了 <code class="docutils literal notranslate"><span class="pre">spec[i,</span> <span class="pre">j]</span></code> 的用法,事实上通过切片就可以实现子图的合并而达到跨图的共能</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
@ -347,36 +380,16 @@
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_9_0.png" src="../_images/index_9_0.png" />
<img alt="../_images/index_11_0.png" src="../_images/index_11_0.png" />
</div>
</div>
<p></p>
<p></p>
</div>
</div>
<div class="section" id="id3">
<h2>二、子图上的方法<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<p><code class="docutils literal notranslate"><span class="pre">ax</span></code> 对象上定义了和 <code class="docutils literal notranslate"><span class="pre">plt</span></code> 类似的图形绘制函数,常用的有: <code class="docutils literal notranslate"><span class="pre">plot,</span> <span class="pre">hist,</span> <span class="pre">scatter,</span> <span class="pre">bar,</span> <span class="pre">barh,</span> <span class="pre">pie</span></code></p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">]);</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_11_0.png" src="../_images/index_11_0.png" />
</div>
</div>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
<span class="n">ax</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">1000</span><span class="p">));</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_12_0.png" src="../_images/index_12_0.png" />
</div>
</div>
<p>补充介绍一些子图上的方法</p>
<p>常用直线的画法为: <code class="docutils literal notranslate"><span class="pre">axhline,</span> <span class="pre">axvline,</span> <span class="pre">axline</span></code> (水平、垂直、任意方向)</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
@ -388,9 +401,11 @@
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_14_0.png" src="../_images/index_14_0.png" />
<img alt="../_images/index_13_0.png" src="../_images/index_13_0.png" />
</div>
</div>
<p></p>
<p></p>
<p>使用 <code class="docutils literal notranslate"><span class="pre">grid</span></code> 可以加灰色网格</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
@ -400,106 +415,45 @@
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_16_0.png" src="../_images/index_16_0.png" />
<img alt="../_images/index_15_0.png" src="../_images/index_15_0.png" />
</div>
</div>
<p>使用 <code class="docutils literal notranslate"><span class="pre">set_xscale,</span> <span class="pre">set_title,</span> <span class="pre">set_xlabel</span></code> 分别可以设置坐标轴的规度(指对数坐标等)、标题、轴名</p>
<p></p>
<p></p>
<p>使用 <code class="docutils literal notranslate"><span class="pre">set_xscale</span></code> 可以设置坐标轴的规度(指对数坐标等)</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">axs</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
<span class="n">fig</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s1">&#39;大标题&#39;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">):</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="s1">&#39;abcd&#39;</span><span class="p">),</span> <span class="p">[</span><span class="mi">10</span><span class="o">**</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">)])</span>
<span class="k">if</span> <span class="n">j</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">set_yscale</span><span class="p">(</span><span class="s1">&#39;log&#39;</span><span class="p">)</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">&#39;子标题1&#39;</span><span class="p">)</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;对数坐标&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">&#39;子标题1&#39;</span><span class="p">)</span>
<span class="n">axs</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;普通坐标&#39;</span><span class="p">)</span>
<span class="k">pass</span>
<span class="n">fig</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_18_0.png" src="../_images/index_18_0.png" />
<img alt="../_images/index_17_0.png" src="../_images/index_17_0.png" />
</div>
</div>
<p>与一般的 <code class="docutils literal notranslate"><span class="pre">plt</span></code> 方法类似, <code class="docutils literal notranslate"><span class="pre">legend,</span> <span class="pre">annotate,</span> <span class="pre">arrow,</span> <span class="pre">text</span></code> 对象也可以进行相应的绘制</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">arrow</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">head_width</span><span class="o">=</span><span class="mf">0.03</span><span class="p">,</span> <span class="n">head_length</span><span class="o">=</span><span class="mf">0.05</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;red&#39;</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">&#39;blue&#39;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">s</span><span class="o">=</span><span class="s1">&#39;这是一段文字&#39;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">70</span><span class="p">,</span> <span class="n">rotation_mode</span><span class="o">=</span><span class="s1">&#39;anchor&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;green&#39;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="s1">&#39;这是中点&#39;</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span> <span class="n">xytext</span><span class="o">=</span><span class="p">(</span><span class="mf">0.8</span><span class="p">,</span> <span class="mf">0.2</span><span class="p">),</span> <span class="n">arrowprops</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">facecolor</span><span class="o">=</span><span class="s1">&#39;yellow&#39;</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">&#39;black&#39;</span><span class="p">),</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">16</span><span class="p">);</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_20_0.png" src="../_images/index_20_0.png" />
</div>
</div>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;line1&quot;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;line1&quot;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="mi">1</span><span class="p">);</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_21_0.png" src="../_images/index_21_0.png" />
</div>
</div>
<p>其中,图例的 <code class="docutils literal notranslate"><span class="pre">loc</span></code> 参数如下:</p>
<table class="colwidths-auto table">
<thead>
<tr class="row-odd"><th class="head"><p>string</p></th>
<th class="head"><p>code</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>best</p></td>
<td><p>0</p></td>
</tr>
<tr class="row-odd"><td><p>upper right</p></td>
<td><p>1</p></td>
</tr>
<tr class="row-even"><td><p>upper left</p></td>
<td><p>2</p></td>
</tr>
<tr class="row-odd"><td><p>lower left</p></td>
<td><p>3</p></td>
</tr>
<tr class="row-even"><td><p>lower right</p></td>
<td><p>4</p></td>
</tr>
<tr class="row-odd"><td><p>right</p></td>
<td><p>5</p></td>
</tr>
<tr class="row-even"><td><p>center left</p></td>
<td><p>6</p></td>
</tr>
<tr class="row-odd"><td><p>center right</p></td>
<td><p>7</p></td>
</tr>
<tr class="row-even"><td><p>lower center</p></td>
<td><p>8</p></td>
</tr>
<tr class="row-odd"><td><p>upper center</p></td>
<td><p>9</p></td>
</tr>
<tr class="row-even"><td><p>center</p></td>
<td><p>10</p></td>
</tr>
</tbody>
</table>
<p></p>
<p></p>
</div>
<div class="section" id="id4">
<h2>参考资料<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="https://matplotlib.org/stable/tutorials/intermediate/gridspec.html#sphx-glr-tutorials-intermediate-gridspec-py">1.matplotlib官网布局使用指南</a></p>
</div>
<h2>思考题<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>墨尔本1981年至1990年的每月温度情况</p></li>
</ul>
<p>数据集来自github仓库下data/layout_ex1.csv<br />
请利用数据,画出如下的图:</p>
<img src="https://s1.ax1x.com/2020/11/01/BwvCse.png" width="800" align="bottom" />
<ul class="simple">
<li><p>画出数据的散点图和边际分布</p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">np.random.randn(2,</span> <span class="pre">150)</span></code> 生成一组二维数据,使用两种非均匀子图的分割方法,做出该数据对应的散点图和边际分布图</p>
<img src="https://s1.ax1x.com/2020/11/01/B0pEnS.png" width="400" height="400" align="bottom" /></div>
</div>

View File

@ -574,7 +574,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_12_01.png" src="../_images/index_12_01.png" />
<img alt="../_images/index_12_0.png" src="../_images/index_12_0.png" />
</div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">Rectangle</span></code>矩形类绘制直方图</p>
@ -610,7 +610,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_14_01.png" src="../_images/index_14_01.png" />
<img alt="../_images/index_14_0.png" src="../_images/index_14_0.png" />
</div>
</div>
<p><strong>2) bar-柱状图</strong></p>
@ -642,7 +642,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_16_01.png" src="../_images/index_16_01.png" />
<img alt="../_images/index_16_0.png" src="../_images/index_16_0.png" />
</div>
</div>
<div class="cell docutils container">
@ -662,7 +662,7 @@ Rectangle本身的主要比较简单即xy控制锚点width和height分别
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_17_0.png" src="../_images/index_17_0.png" />
<img alt="../_images/index_17_01.png" src="../_images/index_17_01.png" />
</div>
</div>
</div>
@ -731,7 +731,7 @@ closed为True则指定多边形将起点和终点重合从而显式关闭多边
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_21_01.png" src="../_images/index_21_01.png" />
<img alt="../_images/index_21_0.png" src="../_images/index_21_0.png" />
</div>
</div>
<p>wedge绘制饼图</p>

View File

@ -377,7 +377,7 @@ ytick.labelsize : 16</p>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_12_02.png" src="../_images/index_12_02.png" />
<img alt="../_images/index_12_01.png" src="../_images/index_12_01.png" />
</div>
</div>
<p>另外matplotlib也还提供了了一种更便捷的修改样式方式可以一次性修改多个样式。</p>
@ -389,7 +389,7 @@ ytick.labelsize : 16</p>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_14_02.png" src="../_images/index_14_02.png" />
<img alt="../_images/index_14_01.png" src="../_images/index_14_01.png" />
</div>
</div>
</div>
@ -422,7 +422,7 @@ ytick.labelsize : 16</p>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_17_01.png" src="../_images/index_17_01.png" />
<img alt="../_images/index_17_02.png" src="../_images/index_17_02.png" />
</div>
</div>
</div>
@ -453,7 +453,7 @@ ytick.labelsize : 16</p>
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_21_02.png" src="../_images/index_21_02.png" />
<img alt="../_images/index_21_01.png" src="../_images/index_21_01.png" />
</div>
</div>
</div>

View File

@ -557,7 +557,7 @@ annotate的参数非常复杂这里仅仅展示一个简单的例子更多
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_14_03.png" src="../_images/index_14_03.png" />
<img alt="../_images/index_14_02.png" src="../_images/index_14_02.png" />
</div>
</div>
<p></p>
@ -589,7 +589,7 @@ annotate的参数非常复杂这里仅仅展示一个简单的例子更多
</div>
</div>
<div class="cell_output docutils container">
<img alt="../_images/index_17_02.png" src="../_images/index_17_02.png" />
<img alt="../_images/index_17_03.png" src="../_images/index_17_03.png" />
</div>
</div>
<p></p>

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long