matplotlib简要画图

前言

对于普通用户,使用一次性画图能很快的学习、完成一般场景下作图。
下面是两个简单的例子:

一次性作图

import matplotlib.pyplot as plt
plt.bar(['a','b','c','d','e'], [20,30,10,50,40], color=['b','c','g','k','m'], alpha = .7)
plt.show()

matplotlib简要画图_第1张图片

面向对象作图

matplotlib简要画图_第2张图片

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1 = plt.bar(['a','b','c','d','e'], [20,30,10,50,40], color=['b','c','g','k','m'], alpha = .7)
fig.show()

结论

面向对象作图会显得复杂一些,做出来的图也不太尽人意,当然图是可以调整的。对于普通用户,我推荐使用一次性画图。

作图基本步骤

1.获得数据、确定作图类型
2.作图
3.调整图(加标签,调大小,调标度… (调整图的函数基本通用)
4.显示图、保存图

图类型:

折线图plot、散点图scatter、直方图hist、柱状图bar、饼状图pie、颜色图colorbar

通用调整函数:plt.function

用法见实例

function 说明 备用栏
figure(figsize=[w,h]) 调整图像大小,此函数必须放在作图函数前 w:宽度、h:高度
title(‘title’) 设置图的标题 title可改为任意字符,中文显示不了
xlabel(str, fontsize, color) 设置x轴的标签 str:x轴标签、fontsize:字体大小、color:颜色
ylabel(str, fontsize, color) 设置y轴的标签 str:y轴标签、fontsize:字体大小、color:颜色
xlim(min, max) 设置x轴的范围 min:最小值、max:最大值
ylim(min, max) 设置y轴的范围 min:最小值、max:最大值
axis(‘off’) 隐藏坐标轴 none
xticks([], rotation = 45) 隐藏x坐标刻度,旋转x坐标刻度45度 []为空列表就是隐藏的意思、rotation:旋转角度
xticks([], rotation = 45) 隐藏y坐标刻度,旋转y坐标刻度45度 []为空列表就是隐藏的意思、rotation:旋转角度
grid(True) 显示网格 none
xscale(‘linear|log|symlog|logit’) 设置x刻度数字的显示方式 任意填一个就行
yscale(‘linear|log|symlog|logit’) 设置y刻度数字的显示方式 任意填一个就行
axhline(y) 在y=y处画一条线 none
axvline(y) 在x=x处画一条线 none
legend(loc = ‘best|[upper] left |right’) 显示标识 best自动调整、left左边显示、right右边显示、upper left不记得什么意思了

各图类型作图实例:

折线图1_plot

默认:
matplotlib简要画图_第3张图片
调整后:
matplotlib简要画图_第4张图片

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1,21,1)  ##产生随机数据
y = np.random.randint(1,50,20)  ##产生随机数据
#plt.figure(figsize=[8,4]) ##调整图的大小
plt.plot(x,y,label='add_label')  ##基本步骤:作图
#plt.title("plot")  ##添加标题
#plt.xlabel('x_axis',fontsize=20,color='c')  ##添加x轴信息
#plt.ylabel('y_axis',fontsize=10,color='g')  ##添加y轴信息
#plt.xlim(0, 20)  ##设置x轴范围
#plt.ylim(-10, 55)  ##设置y轴范围
##plt.axis('off')  ##不显示坐标轴
#plt.xticks(rotation = 45)  ##x坐标轴刻度标签旋转45度
#plt.yticks(rotation = -45)  ##y坐标轴刻度标签旋转45度
#plt.grid(True)  ##显示网格
#plt.xscale('linear')  ##设置x坐标轴刻度数的显示形式
#plt.yscale('linear')  ##设置y坐标轴刻度数的显示形式
#plt.axhline(20)  ##画水平线
#plt.axvline(10)  ##画垂直线
#plt.legend(loc = 'best')  ##自动找到最佳位置显示线标识
plt.show()  ##显示图片

折线图2_plot(plot也可以画出散点图)

matplotlib简要画图_第5张图片

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,21,1)
y = np.random.randint(1,50,20)
plt.plot(x,y,'*')  ##设置样式为*状
plt.show()

折线图3_plot

matplotlib简要画图_第6张图片

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,21,1)
y1 = np.random.randint(1,50,20)
y2 = np.random.randint(1,50,20)
plt.plot(x,y1,'-',x,y2,'--')  ##plot可以同时画多组线,最好还是分开画(用两次plot)
#plt.plot(x,y1,'-')
#plt.plot(x,y2,'--')
plt.show()

散点图scatter

默认:
matplotlib简要画图_第7张图片
调整后:
matplotlib简要画图_第8张图片

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,21,1)
y = np.random.randint(1,50,20)
#plt.figure(figsize=[8,4])
plt.scatter(x,y,label='add_label')
#plt.title("plot")
#plt.xlabel('x_axis',fontsize=20,color='c')
#plt.ylabel('y_axis',fontsize=10,color='g')
#plt.xlim(0, 20)
#plt.ylim(-10, 55)
##plt.axis('off')
#plt.xticks(rotation = 45)
#plt.yticks(rotation = -45)
#plt.grid(True)
#plt.xscale('linear') 
#plt.yscale('linear') 
#plt.axhline(20)
#plt.axvline(10)
#plt.legend(loc = 'best')
plt.show()

直方图hist

默认
matplotlib简要画图_第9张图片
调整后:
matplotlib简要画图_第10张图片

bins = np.arange(0,100,10)
y = np.random.randint(0,100,60)
#plt.figure(figsize=[8,4])
plt.hist(y,bins,label='add_label')  ##y为数值数组,bins为分组,如这里把100分成了10组
#plt.title("plot")
#plt.xlabel('x_axis',fontsize=20,color='c')
#plt.ylabel('y_axis',fontsize=10,color='g')
#plt.xlim(0, 100)
#plt.ylim(0, 20)
##plt.axis('off')
#plt.xticks(rotation = 45)
#plt.yticks(rotation = -45)
#plt.grid(True)
#plt.xscale('linear') 
#plt.yscale('linear') 
#plt.axhline(12)
#plt.axvline(10)
#plt.legend(loc = 'best')
plt.show()

柱状图bar、barh

matplotlib简要画图_第11张图片

import matplotlib.pyplot as plt
plt.bar(['a','b','c','d','e'], [10,20,10,80,60], color=['b','c','g','k','m'], alpha=0.8)
plt.show()

matplotlib简要画图_第12张图片
横着的柱状图有对标签特别长的很有用

import matplotlib.pyplot as plt
plt.barh(['linear regression','logistic regression','svm','decision tree','Random forest'], [.76,.78,.82,.69,.67], color=['b','c','g','k','m'], alpha=0.8)
plt.show()

饼状图pie

matplotlib简要画图_第13张图片

import matplotlib.pyplot as plt
'''explode是饼块露出来的程度,用分数表示,autopct统计占比'''
plt.pie([554,662,453,42,1023,485],labels=['A','B','C','D','E','other'],explode=[0,0,0,0,.1,0],autopct='%1.1f%%',shadow=True)
plt.axis('equal')  ##如果不设置这个参数,画出来的饼是椭圆
plt.show()

颜色图colorbar

matplotlib简要画图_第14张图片

import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(20,20).flatten()*10
y = np.random.randn(20,20).flatten()*10
color = np.random.randint(0,10,20*20).flatten()
plt.scatter(x, y, c = color)  ##颜色图就是画散点图,只是给每个点给标记上颜色
plt.colorbar()  ##画完散点图直接使用这条函数就会在散点图的基础上在右边加上一个颜色条
plt.show()

其他技巧:

一次画多图

使用figure、subplot函数:
matplotlib简要画图_第15张图片

import matplotlib.pyplot as plt
plt.figure(figsize=[8,2])
plt.subplot(131)  ##第一个1代表1行,3代表3列,第一个1代表现在我要操作第1个图
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
plt.subplot(132)  ##操作第2个图
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
plt.grid(True)
plt.subplot(133)  ##操作第3个图
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
#plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.35,wspace=0.35)  ##调整各图的距离,避免重叠
plt.show()

画中画

matplotlib简要画图_第16张图片
使用函数:axes([左边距,下边距,宽,高],facecolor=‘’) ##左边距,下边距,宽,高均为分数

import matplotlib.pyplot as plt
plt.figure(figsize = [10,8])
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
plt.annotate(r'$\mu=100,\ \sigma=15$', xy=(3, 3), xytext=(4, 2.6), arrowprops=dict(facecolor='green',shrink=0.05))  ##添加标签,下面有这条函数的介绍
plt.axes([.17,.65,.2,.2],facecolor='white')  ##开启一个画中画
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])  ##操作画中画
plt.grid(True)
plt.show()

添加标签

matplotlib简要画图_第17张图片

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
plt.text(3,3,r'$\mu=100,\ \sigma=15$')  ##在(3,3)处写上标签
plt.show()

matplotlib简要画图_第18张图片

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5,6],[1,2,3,2,1,2])
##在(4,2.6)处写上标签,用green箭头指向(3,3),shrink越小,箭头越细长
plt.annotate(r'$\mu=100,\ \sigma=15$', xy=(3, 3), xytext=(4, 2.6), arrowprops=dict(facecolor='green',shrink=0.05))  
plt.show()

使用Latex写出数学公式

Latex基本用法:
Latex符号位于双$内,数学符号如

σ \sigma σ
用r"$\sigma$"表示,\是转义符
数学符号:

符号 表示 符号 表示
σ \sigma σ sigma α \alpha α alpha
β \beta β beta γ \gamma γ gamma
δ \delta δ delta λ \lambda λ lambda
ϵ \epsilon ϵ epsilon μ \mu μ mu
ε \varepsilon ε varepsilon ν \nu ν nu
ζ \zeta ζ zeta ξ \xi ξ xi
η \eta η eta π \pi π pi
θ \theta θ theta ϖ \varpi ϖ varpi
ϑ \vartheta ϑ vartheta ρ \rho ρ rho
ι \iota ι iota ϱ \varrho ϱ varrho
κ \kappa κ kappa σ \sigma σ sigma
ς \varsigma ς varsigma φ \varphi φ varphi
τ \tau τ tau χ \chi χ chi
υ \upsilon υ upsilon ψ \psi ψ psi
ϕ \phi ϕ phi ω \omega ω omega

注:一些字符需要特别转义:# $ % & ~ _ ^ \ { } ( ) [ ] 空格也需要转义

样式参考:

marker 说明 marker 说明
‘-’ 实线样式 ‘1’ 下箭头标记
‘–’ 短横线样式 ‘2’ 上箭头标记
‘-.’ 点划线样式 ‘3’ 左箭头标记
‘:’ 虚线样式 ‘4’ 右箭头标记
‘.’ 点标记 ‘s’ 正方形标记
‘,’ 像素标记 ‘*’ 星形标记
‘o’ 圆标记 ‘h’ 六边形标记 1
‘v’ 倒三角标记 ‘H’ 六边形标记 2
‘^’ 正三角标记 ‘+’ 加号标记
‘<’ 左三角标记 ‘x’ X 标记
‘>’ 右三角标记 ‘D’ 菱形标记
‘_’ 水平线标记 ‘d’ 窄菱形标记

颜色参考:

color 说明 color 说明
‘b’ 蓝色 ‘c’ 青色
‘g’ 绿色 ‘k’ 黑色
‘m’ 品红色 ‘r’ 红色
‘y’ 黄色 ‘w’ 白色

颜色参考图:(另外颜色也可以使用十六进制数表示)
matplotlib简要画图_第19张图片

目录

文章目录

  • 前言
        • 一次性作图
        • 面向对象作图
  • 结论
  • 作图基本步骤
    • 通用调整函数:plt.function
    • 各图类型作图实例:
      • 折线图1_plot
      • 折线图2_plot(plot也可以画出散点图)
      • 折线图3_plot
      • 散点图scatter
      • 直方图hist
      • 柱状图bar、barh
      • 饼状图pie
      • 颜色图colorbar
    • 其他技巧:
        • 一次画多图
      • 画中画
      • 添加标签
      • 使用Latex写出数学公式
    • 样式参考:
    • 颜色参考:
  • 目录

你可能感兴趣的:(python,数据可视化,作图,python,matplotlib,画图,教程,可视化)