数据分析12_matplotlib绘图

1.基础知识

导包
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

常用命令

plt.imread()
plt.imshow()

使用CV2进行人脸更换
pip install opencv-python

import cv2

data = cv2.CascadeClassifier()
#加载
data.load()
#使用人脸识别的类
data= cascade.detectMultiScale()

(1)只含单一曲线

x = np.linspace(-5,5,1000)
y = x**2
plt.plot(x,y)

(2)包含多个曲线的图

a.可以使用多个plot函数(推荐),在一个图中绘制多个曲线
x = np.linspace(-5,5,1000)
y = x**2
plt.plot(x,y)
plt.plot(x, x*3)
#show() 函数显示之前的一个图形,然后show后面又显示一个图形
plt.show()
plt.plot(x, np.power(x, 3))

b.也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
line1, line2, line3 = plt.plot(x, y, x, x*3, x, np.power(x,3))
line1.set_linewidth(10)

(3)网格线

使用plt.grid(True)方法为图添加网格线,设置grid参数(参数与plot函数相同),使用plt面向对象的方法,创建多个子图显示不同网格线
面向对象的一种写法,创建多个子视图来进行绘图(这种方法要会

figure = plt.figure(figsize=(12,5))
#z在绘图区域对象中添加子视图
axes1 = figure.add_subplot(1,3,1)
#开始向轴面(axes1)中绘制图形
x = np.linspace(-10,10,1000)
y = np.cos(x)

axes1.plot(x, y)
plt.grid()
#第二个子视图
axes2 = figure.add_subplot(1,3,2)
axes2.plot(x, y, color = "r", linestyle = "-.")
axes2.grid(color = "green", linestyle = "--")
#画第三个子视图
axes3 = figure.add_subplot(133)
axes3.plot(x, y, color = "purple", linestyle = ":")
axes3.grid(color = "pink",linestyle = "-")
(4)坐标轴界限

a.axis方法
如果axis方法没有任何参数,则返回当前坐标轴的上下限axis(xmin =,ymax = )

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

(5)坐标轴标签

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

(6)标题:title方法
plt.plot(x, y)
text = plt.title("this is a half circle", fontsize = 20)
text.set_color("green")
text.set_fontstyle("oblique")
#设置透明度 0-1
text.set_alpha(0.2)
text.set_bbox(dict(facecolor = "purple", alpha = 0.4))
text.set_backgroundcolor(color = "blue")
text.set_rotation(60)
(7)图例

legend方法
两种传参方法:
方式一:

plt.plot(x, y, x, np.sin(x), x, np.cos(x))
plt.legend(["half circle", "sin(x)","cos(x)"])

a.方式二:lable 参数
#第二种写法

plt.plot(x,y,label = "half circle")
plt.plot(x, np.sin(x), label = "sin(x)")
plt.plot(x, np.cos(x), label = "cos(x)")

#不调用是不显示的
plt.legend()
#最常用的是使用第二种写法
【推荐使用】在plot函数中增加label参数
在legend方法中传入字符串列表

b.loc参数

plt.plot(x,y,label = "half circle")
plt.plot(x, np.sin(x), label = "sin(x)")
plt.plot(x, np.cos(x), label = "cos(x)")
#不调用是不显示的
plt.legend(loc = "upper left")

c.ncol参数

plt.plot(x,y,label = "half circle")
plt.plot(x, np.sin(x), label = "sin(x)")
plt.plot(x, np.cos(x), label = "cos(x)")
#不调用是不显示的
plt.legend(loc = "upper left", ncol = 5)

2.设置风格和样式

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

plt.plot(X, Y, 'format', ...)
(1)点和线的样式

a.颜色
参数color或c
b.颜色值的方式
别名
color=‘r’
合法的HTML颜色名
color = ‘red’
HTML十六进制字符串
color = ‘#eeefff’
归一化到[0, 1]的RGB元组
color = (0.3, 0.3, 0.4)

c.透明度
alpha参数
d.背景色
设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标轴的背景色

e.线型
参数linestyle或ls
f.线宽
linewidth或lw参数

g.不同宽度的破折线
dashes参数
设置破折号序列各段的宽度

h.点型
marker参数
i.多参数连用
颜色、点型、线型

(2)面向对象方法

set_xticks、set_yticks、set_xticklabels、set_yticklabels方法

3.2D图形

(1)直方图

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

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

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

bar()、barh()

(3)饼图(扇形图)

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

pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
x = [3,3,3]
plt.pie(x, labels = [“dog”,“pig”,“dragon”])
plt.axis(“equal”)

a.饼图属性设置

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

labels参数设置每一块的标签;labeldistance参数设置标签距离圆心的距离(比例值)

autopct参数设置比例值的显示格式(%1.1f%%);pctdistance参数设置比例值文字距离圆心的距离

explode参数设置每一块顶点距圆形的长度(比例值);colors参数设置每一块的颜色;

shadow参数为布尔值,设置是否绘制阴影 startangle设置旋转角度

(4)散点图

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

4.图形内的文字注释

(1)文字

text()
figtext()

(2)注释

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

5.3D图

from mpl_toolkits.mplot3d.axes3d import Axes3D

发布了388 篇原创文章 · 获赞 71 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ZZQHELLO2018/article/details/103945740