Python可视化——matplotlib.pyplot绘图的基本参数详解


系列文章:



1、matplotlib简介

matplotlib库是Python中绘制二维和三维图表的数据可视化工具
特点:
使用简单绘图语句实现复杂绘图效果
以交互操作实现渐趋精细的图形效果
使用嵌入式LaTeX输出具有印刷级别的图表、科学表达式和符号文本
对图表的组成元素实现精细化控制

三种绘图接口

  • pyplot 面向当前图
  • axes 面向对象
  • Pylab 沿用matlab风格

本文使用pyplot 绘图,展示绘图的基本参数,使用bumpty库获得绘图数据(随机生成)
使用的库

import matplotlib.pyplot as  plt
import numpy as np

2 图形组成元素的函数用法

plot() 展示变量的趋势变化
使用方法: plt.plot(x, y, c, ls, lw, label, alpha, **kwargs)

  • x, y : x, y轴上的数值
  • c :设置颜色
  • ls: 折线图的线条风格
  • lw: 折线图的线条宽度
  • label : 标记图形内容的标签文本
  • alpha: 透明度
  • **kwargs:指定使用的是 line2D 属性

2.1 figure(): 背景颜色

使用方法:figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=Figure, clear=False, **kwargs)

import matplotlib.pyplot as  plt
import numpy as np

plt.figure(figsize=(5,5))
x = np.linspace(0.05, 10, 1000)
y = np.sin(x)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.plot(x, y, color='red', ls='-', label='sinx')
plt.show()

在这里插入图片描述

2.2 xlim() 和 ylim(): 设置x, y轴的数值显示范围

使用方法: plt.xlim(xmin, xmax)
xmin: x轴上的最小值
ymin: y轴上的最大值

2.3 xlabel() 和 ylabel() : 设置x ,y轴的标签文本

使用方法: plt.xlabel(fontsize, verticalalignment, horizontalalignment, rotation, bbox)
fontsize: 数字或者(small , large, medium)
verticalalignment: 距离坐标轴的位置 ( top , bottom, center, baseline)
hoizontalalignment: 位置(center, right, left)
ratation:位置(vertical,horizontal,vertical)
bbox:添加边框

2.4 grid() 绘制刻度线的网格

使用方法 plt.grid(linestyle, color)

2.5 axhline() 绘制平行于x轴额度水平参考线

使用方法: plt.axhline(y, c, ls, lw, label)
y :水平参考线的出发点

import matplotlib.pyplot as  plt
import numpy as np

plt.figure(figsize=(5,5))
x = np.linspace(0.05, 10, 1000)
y = np.sin(x)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.plot(x, y, color='red', ls='-', label='sinx')
plt.xlim(1, 10) #x轴数值显示范围
plt.ylim(-1, 1.5)
plt.xlabel('x轴') #x轴标签文本
plt.ylabel('y轴')
plt.grid(ls=':', color='blue') #设置网格,蓝色
# 平行于x轴水平线
plt.axhline(0.5, color='green', lw=2, label='分割线')
plt.show()

在这里插入图片描述

2.6 axvspan() 绘制垂直于x轴的参考区域

使用方法: plt.axvspan(xmin, xmax, facecolor, alpha)
xmin: 参考区域的起始位置
xmax: 参考区域的终止位置
facecolor: 参考区域填充颜色
alpha:参考区域填充颜色透明度[0,1]
在上面的代码添加(plt.show() 前面添加)

plt.axvspan(xmin=2, xmax=5, facecolor='r', alpha=0.2)

在这里插入图片描述

2.7 xticks(),yticks()

获取或设置当前 x 轴或 y 轴刻度位置和标签(即设置 x 或 y 轴的标 签)
可以理解为设置xilim和ylim一样的效果,但可以指定范围和距离

plt.xticks(list(range(0, 13, 2)))

在这里插入图片描述
注意看x轴,从原来的0-10到现在的0-13,可以通过设置第三个参数设置步长,这里设置为2

散点图

from sklearn import  datasets
import numpy as np
import random
import  matplotlib.pyplot as plt
import time
import  copy

x1, y1 = datasets.make_circles(n_samples=50, factor=0.6,noise=0.2)
# print(x1)
# print("-------------------"*2)
# print(y1)
print(x1.shape)
plt.figure()
plt.scatter(x1[:,0],x1[:,1])
plt.show()

在这里插入图片描述

直方图

matplotlib画直方图 - plt.hist()
常用参数解释:
x: 作直方图所要用的数据,必须是一维数组;多维数组可以先进行扁平化再作图;必选参数;
bins: 直方图的柱数,即要分的组数,默认为10;
range:元组(tuple)或None;剔除较大和较小的离群值,给出全局范围;如果为None,则默认为(x.min(), x.max());即x轴的范围;
density:布尔值。如果为true,则返回的元组的第一个参数n将为频率而非默认的频数;
weights:与x形状相同的权重数组;将x中的每个元素乘以对应权重值再计数;如果normed或density取值为True,则会对权重进行归一化处理。这个参数可用于绘制已合并的数据的直方图;
cumulative:布尔值;如果为True,则计算累计频数;如果normed或density取值为True,则计算累计频率;
bottom:数组,标量值或None;每个柱子底部相对于y=0的位置。如果是标量值,则每个柱子相对于y=0向上/向下的偏移量相同。如果是数组,则根据数组元素取值移动对应的柱子;即直方图上下便宜距离;
histtype:{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’};'bar’是传统的条形直方图;'barstacked’是堆叠的条形直方图;'step’是未填充的条形直方图,只有外边框;‘stepfilled’是有填充的直方图;当histtype取值为’step’或’stepfilled’,rwidth设置失效,即不能指定柱子之间的间隔,默认连接在一起;
align:{‘left’, ‘mid’, ‘right’};‘left’:柱子的中心位于bins的左边缘;‘mid’:柱子位于bins左右边缘之间;‘right’:柱子的中心位于bins的右边缘;
orientation:{‘horizontal’, ‘vertical’}:如果取值为horizontal,则条形图将以y轴为基线,水平排列;简单理解为类似bar()转换成barh(),旋转90°;
rwidth:标量值或None。柱子的宽度占bins宽的比例;
log:布尔值。如果取值为True,则坐标轴的刻度为对数刻度;如果log为True且x是一维数组,则计数为0的取值将被剔除,仅返回非空的(frequency, bins, patches);
color:具体颜色,数组(元素为颜色)或None。
label:字符串(序列)或None;有多个数据集时,用label参数做标注区分;
stacked:布尔值。如果取值为True,则输出的图为多个数据集堆叠累计的结果;如果取值为False且histtype=‘bar’或’step’,则多个数据集的柱子并排排列;
normed: 是否将得到的直方图向量归一化,即显示占比,默认为0,不归一化;不推荐使用,建议改用density参数;
edgecolor: 直方图边框颜色;
alpha: 透明度;

返回值(用参数接收返回值,便于设置数据标签):
n:直方图向量,即每个分组下的统计值,是否归一化由参数normed设定。当normed取默认值时,n即为直方图各组内元素的数量(各组频数);
bins: 返回各个bin的区间范围;
patches:返回每个bin里面包含的数据,是一个list。
其他参数与plt.bar()类似。

import numpy as np

import matplotlib.pyplot as plt


data = np.random.normal(0, 1 ,size=10000)
n, bins, patches = plt.hist(x=data, bins=10, rwidth=0.8, range=(0.5,0.9), align="left")
plt.show()
print(n)
print("--"*30)
print(bins)
print("--"*30)
print(patches)

[147. 132. 116. 140. 118. 122. 112. 118. 123. 103.]
------------------------------------------------------------
[0.5  0.54 0.58 0.62 0.66 0.7  0.74 0.78 0.82 0.86 0.9 ]
------------------------------------------------------------

在这里插入图片描述
Matplotlib(3、直方图) - plt.hist()参数解释&应用实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值