matplotlib基础

Matplotlib绘图(基础篇) 一、Matplotlib绘图的编程方式: 1、pyplot: 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。(常用) 2、pylab:将Matplotlib和Numpy合并的模块,模拟Matlab的编程环境。(不推荐使用) 3、面向对象的方式:Matplotlib的精髓,更基础和底层的方式。(常用) 二、Matplotlib绘图基础 1、Matplotlib绘图标记使用plot()方法的marker参数定义 2、Matplotlib绘图线 阅读详情

matplotlib基本用法

一、Matplotlib基础知识

1.绘制一条曲线图

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
# 1、可以使用多个plot函数(推荐),在一个图中绘制多个曲线
f = lambda x: (1-x**2)**0.5
x = np.linspace(-1,1,100)
y = f(x)
s = Series(index=x, data=y)
s.plot()
# 如果想在一个画布中,绘制多条线,必须保证每一个plot函数都写在同一个cell中
# 每一个cell都自动维护一个画布,所有的plt.plot函数绘制的图形,都呈现在这个画布当中
plt.plot(x,y)
plt.plot(x,-y)
plt.plot(x,x)
#2、也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
plt.plot(x,y, x,-y, x,x)

2、画板的布局

 #画布构建
    figure.add_subplot(*args, **kwargs)
    #参数:
    fig.add_subplot(212, facecolor='r')
    fig.add_subplot(111, projection='polar')
      # add Subplot instance sub
    fig.add_subplot(sub)


   #  **kwargs参数
  adjustable: [ 'box' | 'datalim' | 'box-forced'] 
  agg_filter: unknown
  alpha: float (0.0 transparent through 1.0 opaque) 
  anchor: unknown
  animated: [True | False] 
  aspect: unknown
  autoscale_on: unknown
  autoscalex_on: unknown
  autoscaley_on: unknown
  axes: an :class:`~matplotlib.axes.Axes` instance 
  axes_locator: unknown
  axisbelow: [ *True* | *False* | 'line' ] 
  clip_box: a :class:`matplotlib.transforms.Bbox` instance 
  clip_on: [True | False] 
  clip_path: [ (:class:`~matplotlib.path.Path`, :class:`~matplotlib.transforms.Transform`) | :class:`~matplotlib.patches.Patch` | None ] 
  color_cycle: unknown
  contains: a callable function 
  facecolor: unknown
  fc: unknown
  figure: unknown
  frame_on: [ *True* | *False* ] 
  gid: an id string 
  label: string or anything printable with '%s' conversion. 
  navigate: [ *True* | *False* ] 
  navigate_mode: unknown
  path_effects: unknown
  picker: [None|float|boolean|callable] 
  position: unknown
  rasterization_zorder: unknown
  rasterized: [True | False | None] 
  sketch_params: unknown
  snap: unknown
  title: unknown
  transform: :class:`~matplotlib.transforms.Transform` instance 
  url: a url string 
  visible: [True | False] 
  xbound: unknown
  xlabel: unknown
  xlim: unknown
  xmargin: unknown
  xscale: ['linear' | 'log' | 'logit' | 'symlog']
  xticklabels: sequence of strings
  xticks: sequence of floats 
  ybound: unknown
  ylabel: unknown
  ylim: unknown
  ymargin: unknown
  yscale: ['linear' | 'log' | 'logit' | 'symlog']
  yticklabels: sequence of strings
  yticks: sequence of floats
  zorder: any number 
  • 示例代码
#1、通过画板对象设置子画布
# 推荐使用 ,这种方式更方便控制各个画布的绘制
figure = plt.figure(figsize=(8,4))
# 在画板对象上添加子画布
# 后绘制的画布会覆盖先绘制的画布,表示画布在2行2列画板中的第一个
#参数:facecolor="r" projection="polar"
axes = figure.add_subplot(2,2,1)
# 画布可以执行plot函数,来绘制线性图
axes.plot(x,y)

#2、直接通过plt创建
plt.figure(figsize=(12,4))
axes = plt.subplot(1,2,1)
axes.plot(x, y)
axes1 = plt.subplot(1,2,2)
axes1.plot(x, -y)

3、网格线

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

plt.grid(axis="x",b=None, which='major', axis='both', **kwargs)
#例子
ax.grid(color='r', linestyle='-', linewidth=2)
#参数
axis显示轴向
agg_filter: unknown
    #alpha表示线的明暗程度
  alpha: float (0.0 transparent through 1.0 opaque) 
  animated: [True | False] 
  antialiased or aa: [True | False] 
  axes: an :class:`~matplotlib.axes.Axes` instance 
  clip_box: a :class:`matplotlib.transforms.Bbox` instance 
  clip_on: [True | False] 
  clip_path: [ (:class:`~matplotlib.path.Path`, :class:`~matplotlib.transforms.Transform`) | :class:`~matplotlib.patches.Patch` | None ] 
    #color代表颜色
  color or c: any matplotlib color 
  contains: a callable function 
  dash_capstyle: ['butt' | 'round' | 'projecting'] 
  dash_joinstyle: ['miter' | 'round' | 'bevel'] 
  dashes: sequence of on/off ink in points 
  drawstyle: ['default' | 'steps' | 'steps-pre' | 'steps-mid' | 'steps-post'] 
  figure: a :class:`matplotlib.figure.Figure` instance 
  fillstyle: ['full' | 'left' | 'right' | 'bottom' | 'top' | 'none'] 
  gid: an id string 
    #
  label: string or anything printable with '%s' conversion. 
    #
  linestyle or ls: ['solid' | 'dashed', 'dashdot', 'dotted' | (offset, on-off-dash-seq) | ``'-'`` | ``'--'`` | ``'-.'`` | ``':'`` | ``'None'`` | ``' '`` | ``''``]
    #lw代表linewidth,线的粗细
  linewidth or lw: float value in points 
    #
  marker: :mod:`A valid marker style <matplotlib.markers>`
    #
  markeredgecolor or mec: any matplotlib color 
    #
  markeredgewidth or mew: float value in points 
    #
  markerfacecolor or mfc: any matplotlib color 
  markerfacecoloralt or mfcalt: any matplotlib color 
  markersize or ms: float 
  markevery: [None | int | length-2 tuple of int | slice | list/array of int | float | length-2 tuple of float]
  path_effects: unknown
  picker: float distance in points or callable pick function ``fn(artist, event)`` 
  pickradius: float distance in points 
  rasterized: [True | False | None] 
  sketch_params: unknown
  snap: unknown
  solid_capstyle: ['butt' | 'round' |  'projecting'] 
  solid_joinstyle: ['miter' | 'round' | 'bevel'] 
  transform: a :class:`matplotlib.transforms.Transform` instance 
  url: a url string 
  visible: [True | False] 
  xdata: 1D array 
  ydata: 1D array 
  zorder: any number 
  • 示例代码
# 画板
plt.grid(axis="y",lw=3,alpha=0.3,color="#00aaff")

#画布
plt.figure(figsize=(8,6))
ax1 = plt.subplot(2,2,1)
ax1.grid(axis="y",lw=3,alpha=0.3,color="#00aaff")
ax1.plot(x, y)
ax1.plot(x, -y)

3、坐标轴界定

#格式
plt.axis(*v, **kwargs)
#参数
[xmin, xmax, ymin, ymax] 限制坐标轴的数值范围
axis('off')	# 关闭坐标轴和标签
axis('equal')	#x轴和y轴有相同的刻度增长值
axis('scaled')	#改变画布的尺寸得到相同的结果
axis('tight')	#修改(*xmax* - *xmin*)或(*ymax* -)的情况下将数据移动到图的中心
axis('square')	#将*x*和*y*轴的极限范围(*xmax*-*xmin*)和(*ymax*-*ymin*)更改为相同,并具有相同的缩放,从而得到一个正方形的图。

  • 代码示例
#1、设置坐标轴限制
#plt
x = np.linspace(-np.pi, np.pi, 20)
y = np.sin(x)
plt.plot(x, y)
plt.axis([-5,5,-2,2])
# ax 
ax = plt.subplot(1,1,1)
ax.axis([-5,5,-2,2])
ax.plot(x, y)

#2、设置坐标轴类型
x = np.linspace(-1,1,100)
y = (1-x**2)**0.
ax = plt.subplot(111)
ax.plot(x, y)
# on off 设置坐标轴是否显示
# ax.axis("off")
# equal scale设置坐标轴刻度比例
ax.axis("scaled")
# ax.axis("equal")

  • xlim方法和ylim方法,除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
# plt
plt.ylim([-3,3])
plt.xlim([-3,3])
plt.axis("scaled")

#ax
ax = plt.subplot(111)
# set函数
ax.set_ylim([-2,2])

4、坐标轴标签

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

plt.xlabel(s, *args, **kwargs)
# 参数
s  #标签名字符串
color #标签颜色
fontsize #字体大小
rotation #旋转角度
  • 代码示例
#plt
plt.xlabel("X-Label",color="purple", fontsize=20)
plt.ylabel("Y-Label", rotation = 50, fontsize=15)

#ax
ax = plt.subplot(111)
ax.set_xlabel("X-label",color="green", fontsize=18)
ax.set_ylabel("Y-label",fontdict={
    "fontsize":20,
    "color":"red"
})

5、标题

  • 格式
 1、plt.title(s, *args, **kwargs)
/2、ax2.set_title(label, fontdict=None, loc='center', **kwargs)
#参数
loc {left,center,right}
color 标签颜色
fontsize 字体大小
rotation 旋转角度
  • 代码示例

    #plt
    plt.title("Title",color="red",fontsize=16,rotation=0, loc="left")
    
    #ax
    plt.figure(figsize=(16,8))
    ax1 = plt.subplot(1,2,1)
    ax1.set_title("AXES1",color="greenyellow")
    
    ax2 = plt.subplot(1,2,2)
    ax2.set_title("AXES2",color="cyan")
    

6、图例

  • 格式
plt.legend(*args, **kwargs)
# 1两种传参方法:
分别在plot函数中增加label参数,再调用legend()方法显示
直接在legend方法中传入字符串列表
# 2、loc参数
loc参数用于设置图例标签的位置,一般在legend函数内
matplotlib已经预定义好几种数字表示的位置
字符串	数值	字符串	数值
best	0	center left	6
upper right	1	center right	7
upper left	2	lower center	8
lower left	3	upper center	9
lower right	4	center	10
right	5
loc参数可以是2元素的元组,表示图例左下角的坐标
[0,0] 左下
[0,1] 左上
[1,0] 右下
[1,1] 右上
# ncol控制图例中有几列,在legend中设置ncol,需要设置loc
 
  • 代码示例
x = np.linspace(-np.pi, np.pi, 50)
y = np.sin(x)
# 第一种方法【推荐】
plt.plot(x, y, label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")
# 必须调用legend函数,才能显示图例
plt.legend()

# 第二种方法
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
plt.legend(["sin(x)", "cos(x)"])


plt.plot(x, y, label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")
# 在legend函数中,传入loc参数,来控制图例的显示位置
plt.legend(loc=[1.1,0.1])


plt.plot(x, y, label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")
# ncol参数,用于设置图例显示的列数
plt.legend(loc=0, ncol=2)


7、修改线条样式(linestyle、color、marker)

  • 格式
#1点和线的样式
#颜色
参数color或c
#颜色值的方式
颜色	别名	HTML颜色名	颜色	别名	HTML颜色名
蓝色	b	blue	绿色	g	green
红色	r	red	黄色	y	yellow
青色	c	cyan	黑色	k	black
洋红色	m	magenta	白色	w	white
#HTML十六进制字符串
color = '#eeefff'
#归一化到[0, 1]的RGB元组
color = (0.3, 0.3, 0.4)

#alpha参数   小数

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

#线性,参数linestyle或ls
线条风格	描述	线条风格	描述
'-'	实线	':'	虚线
'--'	破折线	'steps'	阶梯线
'-.'	点划线	'None' / ','	什么都不画
#自定义 线性
不同宽度的破折线
dashes参数 eg.dashes = [20,50,5,2,10,5]
设置破折号序列各段的宽度

#线宽
linewidth或lw参数

# 2、点型
#marker 设置点形
标记	描述	标记	描述
'1'	一角朝下的三脚架	'3'	一角朝左的三脚架
'2'	一角朝上的三脚架	'4'	一角朝右的三脚架
标记	描述	标记	描述
's'	正方形	'p'	五边形
'h'	六边形1	'H'	六边形2
'8'	八边形
标记	描述	标记	描述
'.'	点	'x'	X
'*'	星号	'+'	加号
','	像素
标记	描述	标记	描述
'o'	圆圈	'D'	菱形
'd'	小菱形	'','None',' ',None	无
标记	描述	标记	描述
'_'	水平线	'|'	竖线
标记	描述	标记	描述
'v'	一角朝下的三角形	'<'	一角朝左的三角形
'^'	一角朝上的三角形	'>'	一角朝右的三角形
#markersize 设置点形大小
#markeredgecolor 设置点边缘颜色
#markeredgewidth	设置点边缘宽度
# markerfacecolor 设置点主体颜色

  • 代码示例
x = np.arange(0,5,step=1)
y = x**2
# marker设置点的形状
plt.plot(x, y, ls="steps", marker="x", color= (0.2, 0.1, 0.5), linewidth=3)

## 点的边界线, 点的背景色
ax = plt.subplot(111)
ax.plot(x, y, marker="d", markersize=20, markeredgecolor="red", markeredgewidth=2, markerfacecolor="green")

一、连用
#① 颜色、点型、线型,可以把几种参数写在一个字符串内进行设置 'r-.o'
# 多个都进行设置时,多参数连用 plt.plot(x1, y1, fmt1, x2, y2, fmt2, ...)
plt.plot(x, y,'r-.o', x, 2*y, 'b--s')

#② 面向对象式操作
lines = plt.plot(x, y,  x, 2*y)
plt.legend(["normal","fast"])
#对两个对象分别设置
lines[0].set_color("red")
lines[0].set_dashes([5,1])
lines[0].set_linewidth(3)
lines[1].set_marker("D")
lines[1].set_markersize(16)
lines[1].set_markeredgecolor("black")
lines[1].set_markeredgewidth(2)
lines[1].set_markerfacecolor("green")
lines[1].set_linestyle("--")
lines[1].set_color("black")

# ③ 多个曲线同一设置
plt.plot(x1, y1, x2, y2, fmt, ...)
plt.plot(x, y, x, 2*y, color="red", ls="--", marker="s")
# 自定义虚线, dashes必须传入一个偶数个数的列表
plt.plot(x, y, dashes=[3,9,1,5], color="black",lw=3)

8、保存图片

  • 格式
 savefig(fname, dpi=None, facecolor='w', edgecolor='w',
          orientation='portrait', papertype=None, format=None,
          transparent=False, bbox_inches=None, pad_inches=0.1,
          frameon=None)
    
 # 参数
filename
含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
dpi
图像分辨率(每英寸点数),默认为100
facecolor
图像的背景色,默认为“w”(白色)
    
    
  • 示例代码
# figure函数中的facecolor是用于展示的背景色
figure = plt.figure(figsize=(12,5), facecolor="greenyellow")
ax = figure.add_subplot(111)
ax.plot(x, y, color="red",lw=3, marker="s")
ax.set_title("This is a line2D")

# savefig函数中的facecolor是用于存储图片的背景色
# dpi表示像素
figure.savefig("data.jpg",dpi=50, facecolor="lightgray")

9、x、y轴坐标刻度

  • 格式
 plt.xticks(*args, **kwargs)
plt.xticks()和plt.yticks()方法
需指定刻度值和刻度名称 plt.xticks([刻度列表],[名称列表])
支持fontsize、rotation、color等参数设置 
  • 代码示例
#plt
plt.plot(x, y)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],["-tom","-$\pi$/2","0","Π/2","lucy"])
plt.yticks([-1,0,1], ["min","0","max"])

#ax
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
ax.set_xticklabels(["-tom","-$\pi$/2","0","Π/2","lucy"])
ax.set_yticks([-1,0,1])
ax.set_yticklabels(["min","0","max"]

10、字体设置

全局设置
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

# 测试
plt.title("-中文字体")
加载自定义字体,设置局部
from matplotlib import font_manager
myfont = font_manager.FontProperties(fname='辣鸡心心体.ttf')
# myfont = font_manager.FontProperties(fname='彭为栋九成宫醴泉铭.ttf')

# 测试
plt.title("-中文测试字体", fontproperties=myfont, fontsize=15)

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

控制文字属性的方法:

pyplot函数API方法描述
text()mpl.axes.Axes.text()在Axes对象的任意位置添加文字
xlabel()mpl.axes.Axes.set_xlabel()为X轴添加标签
ylabel()mpl.axes.Axes.set_ylabel()为Y轴添加标签
title()mpl.axes.Axes.set_title()为Axes对象添加标题
legend()mpl.axes.Axes.legend()为Axes对象添加图例
figtext()mpl.figure.Figure.text()在Figure对象的任意位置添加文字
suptitle()mpl.figure.Figure.suptitle()为Figure对象添加中心化的标题
annnotate()mpl.axes.Axes.annotate()为Axes对象添加注释(箭头可选)

所有的方法会返回一个matplotlib.text.Text对象

  • 图形内的文字

#plt.text(x, y, s, fontdict=None, withdash=False, **kwargs)
x = np.linspace(0,np.pi*2, 100)
y = np.sin(x)
plt.plot(x, y)
plt.text(x=1.57,y=0.8, s="最大值",fontdict={
    "color":"red",
    "fontsize":20
})

  • 画板的中心标题
#figure.suptitle(t, **kwargs)
# 添加画板文字
figure = plt.figure(figsize=(12,4))
ax1 = figure.add_subplot(1,2,1)
ax1.plot(x, np.sin(x), color="green")
ax1.set_yticks([-1,0,1])
ax1.grid(axis="y")

ax2 = figure.add_subplot(1,2,2)
ax2.plot(x, np.cos(x), color="green")
ax2.grid(axis="x")

# x, y不在使用具体的刻度,因为画板没有刻度,所以使用的是相对位置
figure.text(x=0.5,y=0,s="这是正弦和余弦曲线图",fontdict={
    "color":"green"
})

# 添加画板的中心标题
figure.suptitle(t="画板标题",fontsize=30, color="red")
  • 注释
ax.annotate(*args, **kwargs)
xy参数设置箭头指示的位置
xytext参数设置注释文字的位置
arrowprops参数以字典的形式设置箭头的样式
width参数设置箭头长方形部分的宽度
headlength参数设置箭头尖端的长度,
headwidth参数设置箭头尖端底部的宽度
shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值),可以理解为控制箭头的长度

如下都是arrowstyle可以选择的风格样式

``'->'``       head_length=0.4,head_width=0.2
``'-['``       widthB=1.0,lengthB=0.2,angleB=None
``'|-|'``      widthA=1.0,widthB=1.0
``'-|>'``      head_length=0.4,head_width=0.2
``'<-'``       head_length=0.4,head_width=0.2
``'<->'``      head_length=0.4,head_width=0.2
``'<|-'``      head_length=0.4,head_width=0.2
``'<|-|>'``    head_length=0.4,head_width=0.2
``'fancy'``    head_length=0.4,head_width=0.4,tail_width=0.4
``'simple'``   head_length=0.5,head_width=0.5,tail_width=0.2
``'wedge'``    tail_width=0.3,shrink_factor=0.5
ax = plt.subplot(111)

ax.plot(x, np.sin(x))
# 添加注释信息
# ax.annotate(s, xy, xytext, arrowprops)
# 直接使用预定义好的箭头样式
ax.annotate(s="最大值", xy=[1.57,1], xytext=[3,0.6], arrowprops={
    "arrowstyle":"fancy"
})
# 自定义箭头样式
ax.annotate(s="最小值", xy=[np.pi*3/2, -1], xytext=[2.5, -0.25], arrowprops={
    "width":2,
    "headlength":5,
    "headwidth":4,
    "shrink":0.1
})

二、2D图像的绘制

1、直方图

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

plt.hist(x, bins=None, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, data=None, **kwargs)

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


  • 示例代码
# 柱高 在特定范围内数据出现的次数
# 柱宽 表示数据的范围
# bins  0-100  bins=10
# normed=True 设置出现数据的概率
data = np.random.randn(1000)
plt.hist(x=data, bins=10, normed=True)
seaborn.kdeplot(data)
  • 拓展(seaborn)
df = DataFrame(data={
    "X_label":np.arange(10),
    "Y_label":np.arange(10)
})
seaborn.barplot(x="X_label", y="Y_label",data=df)

2、条形图

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

  • width 纵向设置条形宽度
  • height 横向设置条形高度
 #纵向条形图bar()、
    plt.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)
 
 # 横向条形图 barh()
     plt.barh(bottom, width, height=0.8, left=None, hold=None, **kwargs)
  • 示例代码
index = np.arange(5)
height = [10,27,19,22,18]
plt.bar(left=index, height=height, align="edge",width=0.7)
plt.xticks(index,["tom","lucy","mery","rose","jack"])

#
plt.barh(index, width=height, align="edge",height=0.7)

3、玫瑰图/极坐标条形图

创建极坐标,设置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)
# 1. 开启极坐标坐标系
plt.axes(polar=True)

# 【注意】刻度和数据的个数要匹配
data = np.arange(1,9,step=1)

# 2. 极坐标的刻度是用弧度表示的,不是角度
x = np.linspace(0,2*np.pi,8, endpoint=False)

# 弧度*360/2*np.pi == 角度
# 不要使用角度做索引,因为极坐标图像,是以弧度作为索引的
# x*180/np.pi
plt.bar(x, data, color=np.random.random(size=(8,3)), align="edge")

4、饼图

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

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

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, hold=None, data=None)
#参数
labels参数设置每一块的标签;
labeldistance参数设置标签距离圆心的距离(比例值,只能设置一个浮点小数)
autopct参数设置比例值的显示格式(%1.1f%%);
pctdistance参数设置比例值文字距离圆心的距离
explode参数设置每一块顶点距圆形的长度(比例值,列表);
colors参数设置每一块的颜色(列表);
shadow参数为布尔值,设置是否绘制阴影
startangle参数设置饼图起始角度
  • 示例代码

    plt.figure(figsize=(8,8))
    _= plt.pie([38,5,10], labels=["GOOD","Normal","VERY GOOD"], 
               labeldistance=0.8, autopct="%1.1f%%",pctdistance=0.9,
               explode=[0.1,0,0],colors=np.random.random(size=(3,3)),shadow=True,startangle=180)
    

5、散点图

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

 plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
 # 参数
 s 表示点的大小
 c 表示点的颜色
 marker 表示点的形状
  • 示例代码
x = np.random.randn(1000)
y = np.random.randn(1000)

plt.figure(figsize=(8,4))
# s 表示点的大小
# c 表示点的颜色
# marker 表示点的形状
plt.scatter(x,y, s=np.random.randint(30,150,size=1000),c=np.random.random(size=(1000,3)),alpha=0.6, marker="o")

三、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)
  • 示例代码
from mpl_toolkits.mplot3d.axes3d import Axes3D
# 获取三维画布
plt.figure(figsize=(8,6))
axes = plt.subplot(projection="3d")

x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)

# 把x,y由一维拓展到二维,用于计算Z值,得到一个二维平面
X, Y = np.meshgrid(x, y)

# 胡乱写了一个函数关系,用来表达Z平面和X,Y的关系
Z = np.sin(X) * np.cos(Y)

# z轴必须是一个二维数组,才能绘制出三维图形
# axes.plot(x,y)
# rstride=2,cstride=2 设置网格线密度
# cmap 色调的映射
axes.plot_surface(X,Y,Z,cmap="winter",rstride=2,cstride=2)

00),c=np.random.random(size=(1000,3)),alpha=0.6, marker=“o”)




## 三、3D图

```python
导包

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)
  • 示例代码
from mpl_toolkits.mplot3d.axes3d import Axes3D
# 获取三维画布
plt.figure(figsize=(8,6))
axes = plt.subplot(projection="3d")

x = np.linspace(-np.pi, np.pi, 100)
y = np.linspace(-np.pi, np.pi, 100)

# 把x,y由一维拓展到二维,用于计算Z值,得到一个二维平面
X, Y = np.meshgrid(x, y)

# 胡乱写了一个函数关系,用来表达Z平面和X,Y的关系
Z = np.sin(X) * np.cos(Y)

# z轴必须是一个二维数组,才能绘制出三维图形
# axes.plot(x,y)
# rstride=2,cstride=2 设置网格线密度
# cmap 色调的映射
axes.plot_surface(X,Y,Z,cmap="winter",rstride=2,cstride=2)
matplotlib基础图标 加粗样式# 41.8°C震惊东京的东京热必须来40张凉快图片 阅读详情

相关推荐

Matplotlib基础绘图函数示例

Pyplot基础图标函数: 函数 说明 plt.plot(x,y,fmt,…) 绘制一个坐标图 plt.boxplot(data,notch,position) 绘制一个箱形图 plt.bar(left,height,width,bottom) 绘制一个条形图 pl

知行流浪 5188

数据处理语言numpy pandas matplotlib

目录NumPy0.一些不严谨的感觉1.NumPy Ndarray 对象2.NumPy 数据类型3.NumPy 数组属性4.NumPy 创建数组5.NumPy 从已有的数组创建数组6.NumPy 从数值范围创建数组7.NumPy 切片和索引8.NumPy 高级索引9.NumPy 广播(Broadcast)10.NumPy 迭代数组♥11.Numpy 数组操作12.NumPy 位运算13.NumPy 字符串函数♥14.NumPy 数学函数♥15.NumPy 算术函数♥16.NumPy 统计函数17.NumPy

孟孟单单的博客 893

【matplotlib】matplotlib.pyplot绘图基础结构分析

matplotlib.pyplot 绘图基础结构分析 官方文档 IImatplotlib基础 可实现基础配置,下例是后端配置,主要是渲染方案相关 matplotlib.use(backend, warn=False, force=True) # Select the backend used for rendering and GUI integration. backend ...

zhuhua造轮子的博客 1958

plt.xticks()

plt.xticks([0,1],[1,2],rotation=0) [0,1]代表x坐标轴的0和1位置,[2,3]代表0,1位置的显示lable,rotation代表lable显示的旋转角度。 官方给出的例子是: xticks( arange(5), (‘Tom’, ‘Dick’, ‘Harry’, ‘Sally’, ‘Sue’) ) 用’Tom’, ‘Dick’, ‘Harry’, ‘Sally’, 'Sue’作为[0,1,2,3,4]位置显示的label。 转载自:https://blog.csdn.

banxia优快云的博客 4895

Python Matplotlib 实现基础绘图

取值范围为{'letter', 'legal', 'executive', 'ledger', 'a0' - 'a10', 'b0' - 'b10'}。支持的格式为eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff。辅助显示层是对容器层的补充,提供了一系列方便的方法来创建常见的图表(如直方图、折线图等),并处理诸如刻度定位、布局和颜色映射等常见情况。edgecolor='black', # 条形边缘的颜色。

weixin_42098295的博客 1305

Pandas 掌握Matplotlib基础绘图①

Pandas 掌握Matplotlib基础绘图

宝哥的学习之路 1354

自定义相机那些坑之预览界面适配及原理

0.思维导图 1.问题的产生 当Activity的oritation设置为portrait时,前置/后置摄像头预览图像会逆时针旋转90度展示,如图: 2.问题产生的本质 相机图像数据来自图像感应器(物理器件)(Image Sensor),图像感应器再将数据输出到预览Window上时,图像感应器有一个读取图像的方向,并且不会改变。这个读取的方向通过CameraInfo的orienta...

技术人生 2019

eCognition易康面向对象分类批量选择样本,批量导出shp

可以的,使用这个工具条最右边那个三角尺manual editing toolbar,这是用来直接指定类别的,咱们可以拿它选完以后把指定的类别转成训练样本。另一个好处是,这个选出来的样本可以直接导出成shp,但select sample是不可以的,只能导出TTAMask也就是栅格掩膜。如果要导出shp,要在转之前导出。中间那条有点点的红线就是我的鼠标轨迹,只要碰到的对象就会全部选中,然后一点3的那个按钮就直接全部划分为林地了,十分丝滑。在弹出来的工作条里,首先选择你的类别,比如这里选一个forest。

qq_61845364的博客 4070

matplotlib.collections、(二)

class matplotlib.collections.AsteriskPolygonCollection(numsides, rotation=0, sizes=(1, ), **kwargs)[source] Bases: matplotlib.collections.RegularPolyCollection Draw a collection of regular asterisks...

weixin_36670529的博客 1717

【深度解析】信息素养提升实践活动(附:历年获奖作品分析)

全国师生信息素养提升实践活动是由教育部教育技术与资源发展中心(中央电化教育馆)主办,面向全国师生的一项信息化交流展示活动。

m0_74417957的博客 2628

Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)

Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)算法背景介绍Hessian 矩阵与泰勒多项式关于求t导数与中心点、亚像素点高斯函数作用文献 算法背景介绍 在线结构光视觉传感器中,由线激光器发射出的线结构光,在本质上为一个连续且具有一定厚度的空间光平面,而在目标表面上所形成的具有一定宽度的光条特征,即为该光平面与目标表面相交而成的交线。在该空间光平面的厚度方向上,光强近似服从高斯分布,因而在摄像机采集到的光条图像中,在沿着光条宽度的方向或光条的法线方向上,其灰度也会呈现出类似

jiangxing11的博客 1万+

plt.xticks中的参数代表的含义与scatter等函数中的变量的意义

plt.xticks([0,1],[1,2],rotation=0) [0,1]代表x坐标轴的0和1位置,[2,3]代表0,1位置的显示lable,rotation代表lable显示的旋转角度。 values=data[‘values’] plt.scatter(values[:,0],values[:,2],marker=‘o’)#以数据的第零列做x轴,第三列做y轴,来描绘散点图 ...

少猿的博客 1万+

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1259

matplotlib基础知识

基础用法,调整刻度范围和名称,调整边框,显示数据名称,添加标注,散点图,柱状图,等高线图,2D图,3D图,多图,图中图,次坐标,动画,交互

weixin_45526117的博客 4656

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

SAP预扣税配置实战:从BP创建到外部接口集成的完整流程

本文详细拆解了SAP S/4HANA中预扣税配置与集成的完整实战流程。内容涵盖从业务伙伴(BP)架构下的数据存储理解、后台基础配置,到针对批量处理场景,如何绕过标准BAPI,采用直接更新核心表LFBW的策略进行高效开发。最后,文章探讨了与外部接口集成的多种模式与数据流设计,为财务顾问和ABAP开发人员提供了一套清晰、可落地的解决方案。

weixin_29204749的博客 415

matplotlib绘图基础

matplotlib 是python最著名的绘图库,十分适合交互式地进行制图,而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。Matplotlib:Matlab的语法、python语言、latex的画图质量。面向对象方式绘图:matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。

皮皮blog 8万+

【100分- 求最多可以派出多少支团队】(题目+思路+Java&C++&Python解析+在线测试)

用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。

m0_73659489的博客 313

Matplotlib基础知识

点击

qq_32001519的博客 375

日常工作记录---在虚拟机中进行slam建图

   今天是10月24号,首先祝各位程序员们节日快乐!!!    最近一周由于实习的原因,对ROS的探索学习,停滞了一段时间,所以今天也就没什么大的进展,本篇文章仅仅记录一下,我在虚拟机中进行slam建图可行性验证的过程,本篇文章同样使用古月学院《如何在Gazebo中实现阿克曼转向车的仿真》的课程资料来进行验证    下面各条之间并没有严格的顺序关系,每一条都是独立的,都是我在验证过程中的经验或者记录:    1、在运行roslaunch bringup racecar_gazebo_rviz.lau

慕羽★的博客 4828

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Matplotlib基础

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。matplotlib.pytplot包含了一系列类似于matlab的画图函数。1.创建画布 -- plt.figure()2.绘制图像 -- plt.plot(x, y)以折线图为例3.显示图像 -- plt.show()

qq_28309121的博客 1346

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

六 Matplotlib基础绘制函数

W_H_M_2018的博客 532

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Matplotlib绘图1 matplotlib基础用法

import matplotlib.pyplot as plt import numpy as np x = np.linspace(-1,1,100)#生成从-1到1 之间的100个数 y = 2*x + 1 plt.plot(x,y)#绘图 plt.show()#显示

zy_小轩的博客 260

Matplotlib基础知识总结

安装使用pip install matplotlib命令即可;

cc是小陈的博客 380

matplotlib的基础学习(个人笔记)

dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。在下载matplotlib和numpy的过程中遇到了许多麻烦但好在有csdn的各位大神问题都一一解决了下面是常见的问题。add_axes方法为新增子区域,该区域可以在figure的任意位置,并且该区域可以设置任意大小。注意:如果三个参数都小于十 subplot(332)和subplot(3,3,2)是一样的。在pycharm的设置中把解释器改成终端中得到的第一个解释器就可以了。(1)plot函数的各个参数的意义。

m0_73641679的博客 661

matplotlib的基础使用

plt.subplot2grid((3, 3), (1, 0), colspan = 2) //(3,3)表示分为3行3列,(1,0)表示选中第1行,第0列的区域进行绘图,colspan=2表示在选中区域的延伸。样式: '-','--','-.',':','.',',',,o,^,v,,s,+,x,D,d,1,2,3,4,h,H,p,| ,_颜色: b(蓝色),g(绿色),r(红色),c(青色),m(品红),y(黄色),k(黑色),w(白色)风格字符:‘-’实线;颜色字符:‘b’蓝色;

yuange1666的博客 1017
上一篇: Scipy简介
下一篇: 机器学习
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值