Task02 艺术画笔见乾坤

1、知识梳理

1.1 概述

    matplotlib的原理或者说基础逻辑是,用Artist对象在画布(canvas)上绘制(Render)图形。Matplotlib有三个层次的API:

  FigureCanvas 代表了绘图区,所有的图像都是在绘图区完成的
  Renderer 代表了渲染器,可以近似理解为画笔,控制如何在 FigureCanvas 上画图。
  Artist 代表了具体的图表组件,即调用了Renderer的接口在Canvas上作图。

      Artist有两种类型:primitives 和containers。

      primitive是基本要素,它包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等。

       container是容器,即用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis。

1.2 matplotlib标准用法

    (1)创建一个Figure实例。

    (2)使用Figure实例创建一个或者多个Axes或Subplot实例。

    (3)使用Axes实例的辅助方法来创建primitive。

1.3 元素介绍
      基本要素-primitives包括曲线-Line2D,矩形-Rectangle,图像-image等。

      Object Container(对象容器)包括Figure容器、Axes容器、Axis容器和Tick容器等。

2、代码实践

 2.1 mat标准流程

import numpy as np

# step 1
# 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例
fig = plt.figure()

# step 2
# 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot
ax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot

# step 3
# 然后用Axes实例的方法画了一条曲线
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s, color='blue', lw=2)
fig.show()

2.2 饼图

import matplotlib.pyplot as plt 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10] 
explode = (0, 0.1, 0, 0) 
fig1, ax1 = plt.subplots() 
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) 
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. 
plt.show()

3、作业练习

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
plt.style.use('default')

def func(x):
    return -1 * (x - 2) * (x - 8) +10


a, b = 2, 9
x = np.linspace(0, 10)
y = func(x)
fig, ax = plt.subplots(figsize=(5, 4))
plt.plot(x, y, 'r', linewidth=2,)

plt.ylim(ymin=0)
ix = np.linspace(a, b)
iy = func(ix)
plt.bar(ix, iy, alpha=0.5, width=0.05, color='lightgray', edgecolor='lightgray', label='The First Bar', lw=1);

plt.text(0.5 * (a + b), 5, r"$\int_a^b f(x)\mathrm{d}x$",
         horizontalalignment='center', fontsize=20)

plt.figtext(0.9, 0.05, '$x$')
plt.figtext(0.1, 0.9, '$y$')

plt.show()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值