matplotlib的使用

一、Matplotlib基础知识

Matplotlib中的基本图表包括的元素

  • x轴和y轴 axis 水平和垂直的轴线
  • 轴标签 axisLabel 水平和垂直的轴标签
  • x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度和最大刻度
  • x轴和y轴刻度标签 tick label 表示特定坐标轴的值
  • 绘图区域(坐标系) axes 实际绘图的区域
  • 画布 figure 呈现所有的坐标系

                                 

    只含单一曲线的图


import numpy as np
import pandas as pd
from pandas import Series,DataFrame

x = np.linspace(0,10,100)#等差数列
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(x) + np.cos(x)
plt.plot(x,y1,x,y2,x,y3)
plt.grid(b=True)#显示网格

                                                    


    设置子画布

        axes = plt.subplot()

axes1 = plt.subplot(233)#这里(233)表示(2,3,3)即两行三列第三个位置
axes1.plot(x,y1)
axes1.grid(lw=2.0,alpha=0.2,color='red',axis='y')

axes2 = plt.subplot(2,3,1)#也可以(231)
axes2.plot(x,y2)

axes3 = plt.subplot(232)
axes3.plot(x,y3)


axes4 = plt.subplot(236)
axes4.plot(x,y3)

                                        

    网格线

        绘制正弦余弦

        使用plt.grid方法可以开启网格线,使用plt面向对象的方法,创建多个子图显示不同网格线

        
  • lw代表linewidth,线的粗细
  • alpha表示线的明暗程度
  • color代表颜色
  • axis显示轴向


特别说明:

配置字体

plt.rcParams['font.sans-serif'] = ['simhei'] 
plt.rcParams['axes.unicode_minus'] = False    #编码,如果有负号不显示时需要添加这句话

坐标轴界限




plt.axis([xmin,xmax,ymin,ymax])

xlim方法和ylim方法

除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围

x = np.linspace(0,10,10)
y = np.cos(x) + np.sin(x)

plt.plot(x,y,ls='steps')
plt.axis([-5,10,-2,2])
plt.xlabel("this is X")

plt.ylabel("this is Y")
# simhei
plt.rcParams['font.sans-serif'] = ['simhei'] 
plt.rcParams['axes.unicode_minus'] = False
plt.title("标题,color='red',
          loc = 'left' , 
)

坐标轴标签

xlabel方法和ylabel方法
plt.ylabel('y = x^2 + 5',rotation = 60)旋转

  • color 标签颜色
  • fontsize 字体大小
  • rotation 旋转角度

标题

plt.title()方法

  • loc {left,center,right}
  • color 标签颜色
  • fontsize 字体大小
  • rotation 旋转角度

legend方法

两种传参方法:

  • 分别在plot函数中增加label参数,再调用legend()方法显示
  • 直接在legend方法中传入字符串列表

        loc参数

  • loc参数用于设置图例标签的位置,一般在legend函数内
  • matplotlib已经预定义好几种数字表示的位置
                                                                                

loc参数可以是2元素的元组,表示图例左下角的坐标

  • [0,0] 左下
  • [0,1] 左上
  • [1,0] 右下
  • [1,1] 右上

图例也可以超过图的界限loc = (-0.1,0.9)

ncol参数

ncol控制图例中有几列,在legend中设置ncol,需要设置loc

保存图



        使用figure对象的savefig的函数

  • filename
    含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
  • dpi
    图像分辨率(每英寸点数),默认为100
  • facecolor
    图像的背景色,默认为“w”(白色)

        .png和.jpg这两张图片有什么实质性的不同

二、设置plot的风格和样式

plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, 'format', ...)

点和线的样式

        颜色

            参数color或c

        颜色值的方式
  • 别名
    • color='r'
  • 合法的HTML颜色名
    • color = 'red'

                                        

  • HTML十六进制字符串
    • color = '#eeefff'
  • 归一化到[0, 1]的RGB元组
    • color = (0.3, 0.3, 0.4)
  • jpg png 区别?


            透明度

                alpha参数

背景色

设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标系的背景色

线型

参数linestyle或ls


x = np.linspace(0,10,10)
y = np.cos(x) + np.sin(x)
axes = plt.subplot()
axes.plot(x,y,'r:|',markersize=16)
                                        

X、Y轴坐标刻度

plt.xticks()和plt.yticks()方法

  • 需指定刻度值和刻度名称 plt.xticks([刻度列表],[名称列表])
  • 支持fontsize、rotation、color等参数设置

x = np.linspace(0,20,20)
y = np.sin(x)
plt.plot(x,y)
plt.xticks(np.arange(0,20,5), ('0', 'π/2', 'π', '2π'))
plt.yticks(np.arange(0,20,5), ('0', 'π/2', 'π', '2π'))


三、2D图形

直方图

【直方图的参数只有一个x!!!不像条形图需要传入x,y】

hist()的参数

  • bins
    可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
  • normed
    如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
  • color
    指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
  • orientation
    通过设置orientation为horizontal创建水平直方图。默认值为vertical

x = np.random.normal(0,1,100)
plt.hist(x,normed=True,color='g',orientation='vertical')


条形图

【条形图有两个参数x,y】

  • width 纵向设置条形宽度
  • height 横向设置条形高度

bar()、barh()


# 第一个随机数就是X轴向的数据
# 第二个随机数就是Y轴向的数据
x = np.random.randint(0,100,size=100)
y = np.random.randint(0,100,size=100)
plt.bar(x,y,1)
plt.barh(x,y,0.25)

饼图

【饼图也只有一个参数x!】

饼图阴影、分裂等属性设置

  • labels参数设置每一块的标签;
  • labeldistance参数设置标签距离圆心的距离(比例值,只能设置一个浮点小数)
  • autopct参数设置比例值的显示格式(%1.1f%%);
  • pctdistance参数设置比例值文字距离圆心的距离
  • explode参数设置每一块顶点距圆形的长度(比例值,列表);
  • colors参数设置每一块的颜色(列表);
  • shadow参数为布尔值,设置是否绘制阴影
  • startangle参数设置饼图起始角度

pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小


#普通各部分占满饼图
x = np.array([1,2,3])
plt.pie(x)
                    
x = np.array([0.5,0.3])
plt.pie(x,labels=['one','two'],labeldistance=0.8,autopct="%1.2f%%",explode=[0.05,0.05],colors=["black","blue"],shadow=True,startangle=90)

                            

普通各部分占满饼图

散点图

【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】

scatter()


x = np.random.randint(0,100,size=1000)
y = np.random.randint(0,100,size=1000)

plt.scatter(x,y)
                            

四、图形内的文字、注释、箭头

控制文字属性的方法:

                        

x = np.random.randint(0,100,10)
x[1] = 200
plt.plot(x)
# plt.text(2.5,210,"first",bbox=dict(facecolor='red', alpha=0.5))
plt.annotate(xy=(1.8,200),s="first",xytext=(2.8,210),arrowprops={"arrowstyle":'fancy'})

                                

注释

annotate()

  • xy参数设置箭头指示的位置
  • xytext参数设置注释文字的位置
  • arrowprops参数以字典的形式设置箭头的样式
  • width参数设置箭头长方形部分的宽度
  • headlength参数设置箭头尖端的长度,
  • headwidth参数设置箭头尖端底部的宽度
  • 、shrink参数设置箭头顶点、尾部与指示点注释文字的距离(比例值),可以理解为控制箭头的长度

五、3D图


导包

  • from mpl_toolkits.mplot3d.axes3d import Axes3D

使用mershgrid函数切割x,y轴

  • X,Y = np.meshgrid(x, y)

创建3d坐标系

  • axes = plt.subplot(projection='3d')

绘制3d图形

  • p = axes.plot_surface(X,Y,Z,color='red',cmap='summer',rstride=5,cstride=5)

添加colorbar

  • plt.colorbar(p,shrink=0.5)


x = np.linspace(-np.pi,np.pi,100)
y = np.linspace(-np.pi,np.pi,100)
X,Y=np.meshgrid(x, y)#切割
Z=np.sin(X) + np.cos(Y)
plt.figure(figsize=(12,8))#放大显示
axes=plt.subplot(projection='3d')
p = axes.plot_surface(X,Y,Z,color='red',cmap='summer',rstride=5,cstride=5)
plt.colorbar(p,shrink=0.5)

创建极坐标,设置polar属性

  • plt.axes(polar = True)

绘制极坐标条形图

  • index = np.arange(-np.pi,np.pi,2*np.pi/6)
  • plt.bar(x=index ,height = [1,2,3,4,5,6] ,width = 2*np.pi/6)

plt.axes(polar = True)
index = np.arange(-np.pi,np.pi,2*np.pi/6)
plt.bar(x=index ,height = [1,2,3,4,5,6] ,width = 2*np.pi/6)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值