matplotlib可视化

基本绘图
  1. 库导入
import matplotlib.pyplot as plt
import numpy as np
  1. 散点图(scatter)
# 函数API
plt.scatter(x,y,c,s,marker,alpha)
"""参数解析:c -- 颜色
			s -- 点的大小
			marker -- 点的样式
			alpha -- 透明度
"""
# 面向对象
ax.scatter(x,y,c,s,marker,alpha)
  1. 折线图
# 函数API
plt.plot(x,y,color,linestyle,marker,markerfacecolor,markersize)
"""参数解析:color -- 线的颜色
			linestyle -- 线的类型
			marker -- 点的形状
			markerfacecolor -- 点的颜色
			markersize -- 点的大小
"""
plt.plot_date() # 专门绘制某个轴为日期类型的数据
# 面向对象
ax.plot(x,y,color,linestyle,marker,markerfacecolor,markersize)
ax.plot_date()

  1. 条形图
# 函数API
# 默认绘制垂直直方图
plt.bar(x,height,width,bottom,color)
"""常用参数:x -- 每个条的x坐标位置
			height -- 条的高度
			width -- 条的宽度
			bottom -- y坐标的起始基准值,用于绘制多组数据
			color -- 条的颜色
			tick_label -- 在每个条的底部添加标签,x轴方向
"""
# 绘制水平直方图
plt.barh(y,width,height,left,color)
"""常用参数:
		y -- 每个条的y坐标位置
		width -- 条的宽度,相当于bar函数的高度
		height -- 条的高度,相当于bar函数的宽度
		left -- x坐标的起始基准值,相当于bar函数的bottom
		color -- 条的颜色
		tick_label -- 在每个条的底部添加标签,y轴方向
"""
# 面向对象
ax.bar(x,height,width,bottom,color)
ax.barh(y,width,height,left,color)
  1. 直方图
# 函数API
# 一维直方图:观察变量的分布情况
plt.hist(x,bins,color,normed)
"""常用参数:
		x -- 输入数据
		bins -- 等间隔划分的条数
		colot -- 颜色
		normed -- 是否标准化
"""
# 二维直方图:观察两个变量的联合分布
plt.hist2d(x,y,bins)
"""常用参数:
		x,y -- 输入数据
		bins -- 等间隔划分的条数
"""
# 面向对象
ax.hist(x,bins,color,normed)
ax.hist2d(x,y,bins)
  1. 饼状图
# 函数API
plt.pie(x,explode,labels,colors,autopct,shadow)
"""常用参数:
		x -- 输入数据
		explode -- 距离数组,每部分与中心的距离
		labels -- 标签数组
		colors -- 颜色数组 
		autopct -- 百分比标注,格式:“% 2.2f% %”
		shadow -- 添加阴影
		注:默认绘制的是椭圆形的饼图,如绘制圆形饼图,需要把两个轴的尺度相同
			在绘图前调用plt.axes(aspect=1)可实现
"""
# 面向对象
ax.pie(x,explode,labels,colors,autopct,shadow)
  1. 箱形图
# 函数API
plt.boxplot(x,notch,sym,vert,whis)
"""常用参数:
		x -- 输入数据
		notch -- 是否带开槽
		sym -- 外点的形状
		vert -- 是否垂直绘制
		whis -- 箱子两端的加长长度
"""
# 面向对象
ax.boxplot(x,notch,sym,vert,whis)
  1. 极坐标图
"""极坐标系绘图"""
# 函数API
plt.polar(theta,r)
# 面向对象
ax = plt.subplot(111,projection="polar")
颜色和线型
  1. 颜色
    常规颜色:‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, ‘w’
    16进制RGB表示:’#ffabff’ 除#号外每两个字符表示一个颜色通道通道
    RGB颜色:(0,0.5,0.7) 每个颜色取值在[0-1]之间
    官方手册查询关键字:matplotlib.colors
"""常规颜色"""
color = ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'w']
"""16进制RGB颜色"""
color = '#FFABFF' # '#ffabff' ,此处不区分大小写一样 
"""浮点RGB颜色"""
color = (0.1,0.5,0.8)
"""颜色映射"""
colormap = matplotlib.colors.ListedColormap(list("bgrc")) # 参数为list,或者array
# 注:可用于绘图函数中带cmap参数的赋值,实现不同类别的颜色区分
x,y = sklearn.datasets.make_blobs(n_samples=500,n_features=2,centers=5) # 生成500带标签的数据,x为数据,y为标签,类别个数5
xf1,xf2 = x[:,0],x[:,1]
plt.scatter(xf1,xf2,c=y,cmap=colormap,s=30)
plt.show()
# 效果如下图所示

在这里插入图片描述
2. 点的样式
在这里插入图片描述
更多样式请参考官方手册
官方手册查询关键字:matplotlib.markers
3. 线的类型
常规线型:直线,点线,虚线,点画线
在这里插入图片描述更多线型请参考官方手册
官方手册查询关键字:linestyles

子图创建
  1. 系统创建子图
    系统创建子图会根据子图个数等分画布,创建的子图每个大小相等
# 函数API
plt.subplot(111)
# 面向对象
fig.add_subplot(111)
  1. 自定义创建子图
    自定义子图如下图所示,可根据需要在不同位置,绘制指定大小的子图
    在这里插入图片描述
"""创建自定义轴对象Axes"""
fig = plt.figure()
rect=[left,bottom,width,height] # rect 表示axes对象在画布中的位置及大小
ax = fig.add_axes(rect) # 这种方式可实现灵活的布局
面向对象绘图

面向对象绘图可实现灵活在一个图对象中添加多个子图,以及创建多个图对象
在这里插入图片描述

fig = plt.figure(figsize=(16,9)) # 创建图像对象,每次调用可创建一个图对象
ax1 = fig.add_subplot(231) # 添加子图 231表示2行3列第1位置的子图
ax2 = fig.add_subplot(232) 
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(234)
ax5 = fig.add_subplot(235)
ax6 = fig.add_subplot(236)

x1 = np.random.randint(-20,20,50)
y1 = x1**2
ax1.set_title("ax1_scatter",size=15)
ax1.scatter(x1,y1,c="r",s=10,marker="o",alpha=0.7)

x2 = np.linspace(0,2*np.pi,50)
y2 = np.sin(x2)
ax2.set_title("ax2_plot",size=15)
ax2.plot(x2,y2,color="b",linestyle="solid",marker="x",markerfacecolor="r",markersize=5)

x3 = np.arange(20)
y3 = np.random.randint(50,300,20)
ax3.set_title("ax3_bar",size=15)
ax3.bar(x3,height=y3,width=0.5,bottom=0,color="g")
ax3.bar(x3,height=y3-x3,width=0.5,bottom=y3,color="y")

x4 = np.random.randn(500)
ax4.set_title("ax4_hist",size=15)
ax4.hist(x4,bins=50,color="c",normed=True)

x5 = [42,86,94,37,85]
ax5.set_title("ax5_pie",size=15)
ax5.pie(x5,explode=(0,0.05,0.1,0,0.05),labels=["clothes","learn","work","food","game"],autopct="% 2.2f% %",shadow=True)

x6 = np.random.randn(100)
ax6.set_title("ax6_boxplot",size=15)
ax6.boxplot(x6,notch=True,sym="p")

plt.show()
坐标轴操作
  1. 设置坐标轴范围
"""设置坐标轴范围"""
# 函数API
plt.axis(xlim=(xmin,xmax),ylim=(ymin,ymax)) # 指定x轴和y轴的范围
plt.xlim(xmin,xmax)
plt.ylim(ymin,ymax)
# 面向对象
ax.set(xlim=(xmin, xmax), ylim=(ymin, ymax))
ax.set_xlim(xmin,xmax)
ax.set_ylim(ymin,ymax)
  1. 设置坐标轴刻度
"""设置坐标轴刻度"""
# 函数API
plt.xticks(ticks,labels) # 可同时指定刻度值及对应标签,二者长度需一致
plt.yticks(ticks,labels)
# 面向对象
ax.set_xticks(ticks)
ax.set_yticks(ticks)
  1. 设置坐标轴刻度标签
# 函数API
plt.xticks(ticks,labels) # 可同时指定刻度值及对应标签,二者长度需一致
plt.yticks(ticks,labels)
# 面向对象
ax.set_xticklabels(labels) # lables长度需与tick长度一致
ax.set_yticklabels(labels)
  1. 设置坐标轴标签
# 函数API
plt.xlabel(xlabel)  # x轴标签
plt.ylabel(ylabel)  # y轴标签
# 面向对象
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
  1. 添加孪生坐标轴
"""添加坐标轴"""
# 函数API
ax1 = plt.twinx(ax) # 为ax添加共享x轴的y轴
ax2 = plt.twiny(ax) # 为ax添加共享y轴的x轴
# 面向对象
ax1 = ax.twinx() 
ax2 = ax.twiny()
图像文本操作
  1. 中文字符显示
"""方法1:使用时改变"""
import matplotlib
font=matplotlib.font_manager.FontProperties(fname=r"C:\Windows\Fonts\STXINGKA.TTF",size=15) # fname为系统自带字体库路径
plt.title("标题",fontproperties=font)  # 通过指定fontproperties参数使用,没设置改参数将不做改变
"""方法2:全局改变"""
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 相应的字体库,具体查询手册
matplotlib.rcParams['axes.unicode_minus'] = False
  1. 文本绘制
"""Axes对象绘制:Axes对象所在区域位置"""
# 函数API
plt.title()    # 设置标题
plt.text()     # 普通文本注释
plt.annotate() # 带箭头注释
# 面向对象
ax.set_title() # 设置轴对象标题
ax.text()      # 普通文本注释
ax.annotate()  # 带箭头注释
"""figure对象绘制:画布的任意位置"""
# 函数API
plt.figtext()   # 普通文本注释
plt.suptitle()  # 设置画布标题
# 面向对象
fig.figtext()
fig.suptitle()
  1. 公式绘制
"""公式绘制可用任意可标注文本的函数或方法实现,只需要采用Tex格式书写字符串即可"""
s = r"$ \int_a^b $" # 开头结尾用$号,中间为公式内容 具体写法查询手册mathtext部分内容
plt.text(x,y,s)
其他功能
"""添加网格"""
plt.grid(b,color,linestyle,linewidth,alpha) # 具体参数查手册matplotlib.pyplot.grid
ax.grid(...) 
"""添加图例"""
plt.legend() # 具体用法参见手册matplotlib.pyplot.legend
ax.legend() 
"""区域填充"""
plt.fill(x,y,color,alpha)
plt.fill_between(x,y1,y2,where) # y2可以是标量scalar,where可以指定条件如where=(y1>y2),表示填充y1>y2的情况
"""绘制图形"""
import matplotlib.patches as mpatches
circle = mpathces.Circle() # 绘制圆
ax.add_patch(circle)  # 详细信息查看https://matplotlib.org/api/patches_api.html?highlight=patches#module-matplotlib.patches
"""图形美化"""
plt.style.use(style)
# 所有可用风格,可用plt.style.available 获取
# ['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']

"""创建自定义轴对象Axes"""
fig = plot.figure()
rect=[left,bottom,width,height] # rect 表示axes对象在画布中的位置及大小
ax = fig.add_axes(rect) # rect=[left,bottom,width,height] # 通过这种方式可实现灵活的布局,而不像subplot生成的自动对齐的axes对象

"""在x轴旋转显示日期数据"""
fig = plt.figure()
fig.autofmt_xdate()  # 详细用法参见手册
"""设置arist对象的属性"""
plt.setp()  # 详细用法参见手册
"""画布自动布局"""
plt.tight_layout(rect=(0,0,1,0.96)) # rect = (left,bottom,right,top) 表示布置的范围
fig.tight_layout(rect=(0,0,1,0.96))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值