Python之数据分析(figure图形对象、Numpy连线特殊点、图像多元布局)

2023-05-16

文章目录

      • 一、点的绘制
      • 二、figure图形对象
      • 三、多元布局

一、点的绘制

1、绘制点需要提前设置点

# 设置点,在plot后面绘制点
xo = np.pi * 3/4  # 设置点横坐标位置为为3π/4
yo_cos = np.cos(xo)/2  # 两个纵坐标位置
yo_sin = np.sin(xo)

2、连点成线

  • 绘制:mp.scatter(水平坐标数组, 垂直坐标数组, marker=点的形状, s=点的大小, edgecolor=勾边色, facecolor=填充色, zorder=Z序)
  • Z序:画图的顺序,默认plot画点的0,线是1,数字越大,画得越晚,笔画就在处在越顶层
# 绘制点scatter
# 两个点:第一个点横坐标xo,纵坐标yo_cos;第二个点横坐标xo,纵坐标yo_sin
mp.scatter([xo, xo], [yo_cos, yo_sin], s=70, edgecolor='limegreen', facecolor='white', zorder=3 )
# 用plot画条虚线连接两点
mp.plot([xo, xo], [yo_cos, yo_sin], linestyle='--', linewidth=1, color='lightgreen')

3、添加注释
mp.annotate(
备注文本,
xy=目标位置,
xycoords=目标相对坐标系,
xytext=文本位置,
textcoords=文本相对坐标系,
fontsize=字体大小,
arrowprops=箭头属性
)

# 添加注释
mp.annotate(
    r'$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$',  # 表示1/2cos(3π/4)
    xy=(xo, yo_cos), xycoords='data',  # 点的位置,点的相对坐标系
    xytext=(-90, -40), textcoords='offset points',  # 文本相对于点的偏移量,左-90,下-40;偏移坐标系
    fontsize=14,
    arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=.2')
    # 箭头风格为->,连接文字为圆弧线,圆弧曲率半径为0.2
)

二、figure图形对象

1、创建图形对象

mp.figure(图形对象名, figsize=窗口大小, dpi=分辨率, facecolor=窗口颜色)

2、练习代码


import numpy as np
import matplotlib.pylab as mp

# 参数定义
x = np.linspace(-np.pi, np.pi, 1000)
cos_y = np.cos(x)/2
sin_y = np.sin(x)

# 创建第一个图形对象
mp.figure("FO 01", figsize=(6, 4), dpi=120, facecolor='lightgray')
mp.title("FO 01", fontsize=20)

# 绘制横纵坐标
mp.xlabel('x', fontsize=12)
mp.ylabel('y', fontsize=12)

# 设置刻度标签大小
mp.tick_params(labelsize=10)
# 放置网格线
mp.grid(linestyle=":")

# 画图线
mp.plot(x, cos_y, label=r"$y=\frac{1}{2}cos(x)$")
mp.legend()  # 图例


# 创建第二个图形对象
mp.figure("FO 02")
mp.title("FO 02", fontsize=20)
mp.plot(x, sin_y, label=r"$y=sin(x)$")
# 绘制横纵坐标
mp.xlabel('x', fontsize=12)
mp.ylabel('y', fontsize=12)

# 设置刻度标签大小
mp.tick_params(labelsize=10)
# 放置网格线
mp.grid(linestyle=":")
mp.legend()  # 图例

mp.show()

11

三、多元布局

1、缺省布局

  • 创建子图:mp.subplot(行数, 列数, 图号)
  • 练习代码:
import matplotlib.pylab as mp

# 设置面板颜色
mp.figure(facecolor="lightgray")

# 创建子图,用for循环连续创建几张
for i in range(2):
    for j in range(3):
        k = i*3 + j + 1
        mp.subplot(2, 3, k)  # 2行3列的子图,此处为第1张
        mp.xticks(())  # 刻度设为()空元组,就是无刻度
        mp.yticks(())
        mp.text(0.5,0.5, str(k), ha='center', size=36, alpha=0.5)

mp.tight_layout()  # 紧凑布局
mp.show()  # 显示图

2、栅格布局

  • 引入模块:import matplotlib.gridspec as mg
  • 创建栅格:gs = mg.GridSpec(行数, 列数)
  • 放置子图:mp.subplot(gs[行, 列])
  • 练习代码:
import matplotlib.pylab as mp
import matplotlib.gridspec as mg

mp.figure(facecolor="lightgray")  # 创建窗口
gs = mg.GridSpec(3, 3)  # 创建栅格布局器

# 画第一张子图
mp.subplot(gs[0, :2])  # 一个子图占栅格的第0行的前两列

# 取消坐标轴
mp.xticks(())
mp.yticks(())

# 显示文字
mp.text(0.5, 0.5, '1', ha='center', va='center', size=36, alpha=0.5)


# 第二张子图
mp.subplot(gs[1:, 0])  # 一个子图占栅格的第1行后的所有行,第0列
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '2', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 第三张子图
mp.subplot(gs[2, 1:])  # 一个子图占栅格的第2行,第1列后的所有列
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '3', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 第四张子图
mp.subplot(gs[:2, 2])  # 一个子图占栅格的第2行前的所有行,第2列
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '4', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 第五张子图
mp.subplot(gs[1, 1])  # 一个子图占栅格的第1行,第1列
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '5', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 显示图表
mp.show()

22

3、自由布局

  • mp.axes([左下角水平左边, 左下角垂直坐标, 宽度, 高度]) # 此处的尺寸参数都是按比例来的
  • 练习代码:
import matplotlib.pylab as mp

mp.figure(facecolor="lightgray")  # 创建窗口

# 创建一个自由布局的图
mp.axes([0.03, 0.038, 0.94, 0.924])  # 计算:0.94=1-0.03*2;0.924=1-0.038*2
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '1', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 创建第2个自由布局的图
mp.axes([0.60, 0.07, 0.35, 0.5])  # 计算:0.94=1-0.03*2;0.924=1-0.038*2
mp.xticks(())  # 取消坐标轴
mp.yticks(())
mp.text(0.5, 0.5, '2', ha='center', va='center', size=36, alpha=0.5)  # 显示文字

# 显示图表
mp.show()

33

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之数据分析(figure图形对象、Numpy连线特殊点、图像多元布局) 的相关文章

随机推荐