在进行数据可视化时,对于一元函数f(x)=y数据我们可以使用二维平面图显示,x轴表示自变量,y轴表示函数值;对于二元函数f(x,y)=z数据我们也可以使用三维图可视化,x和y轴表示自变量,z轴表示函数值。由于显示设备的局限性,对于三元函数f(x,y,z)=v数据无法通过增加坐标轴的方式可视化,一个可行的方法是使用x、y和z轴表示自变量,使用数据点的颜色表示函数值。如下图所示:
三维散点图实例
本文实现了如上图所示的三维散点图,颜色表示数值大小,并增加了可以自定义范围的侧边colorbar。
文章第二部分为实现代码及部分注释,第三部分为对部分代码的详细解释,第四部分为参考的文章链接。
二、代码
import matplotlibcolors
import matplotlibticker
import matplotlibpyplot as plt
import random
# 10 初始化数据
# f(x,y,z) = v
# 其中x,y,z为随机数,v=xyz
x = [randomrandint(0,100) for i in range(0,100)]
y = [randomrandint(0,100) for i in range(0,100)]
z = [randomrandint(0,100) for i in range(0,100)]
v = [x[i]y[i]z[i] for i in range(0,100)]
# 11 根据各个点的值(v[]),设置点的颜色值,每个点的颜色使用一个rgb三维的元组表示,例如,若想让点显示为红色,则颜色值为(10,0,0)
# 设置各个点的颜色
# 每个点的颜色值按照colormap("seismic",100)进行设计,其中colormap类型为"seismic",共分为100个级别(level)
min_v = min(v)
max_v = max(v)
color = [pltget_cmap("seismic", 100)(int(float(i-min_v)/(max_v-min_v)100)) for i in v]
# 20 显示三维散点图
# 新建一个figure()
fig = pltfigure()
# 在figure()中增加一个subplot,并且返回axes
ax = figadd_subplot(111,projection='3d')
# 设置colormap,与上面提到的类似,使用"seismic"类型的colormap,共100个级别
pltset_cmap(pltget_cmap("seismic", 100))
# 绘制三维散点,各个点颜色使用color列表中的值,形状为""
im = axscatter(x, y, z, s=100,c=color,marker='')
# 21 增加侧边colorbar
# 设置侧边colorbar,colorbar上显示的值使用lambda方程设置
figcolorbar(im, format=matplotlibtickerFuncFormatter(lambda x,pos:int(x(max_v-min_v)+min_v)))
# 22 增加坐标轴标签
axset_xlabel('x')
axset_ylabel('y')
axset_zlabel('z')
# 23显示
pltshow()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
运行结果如下:
在这里插入描述
三、部分代码解释
1 colormap(颜色)映射设置。
如上图所示,为了通过颜色表示各个点的值需要设定一个合理的值-点颜色映射关系。本文代码中使用"seismic"colormap,同时设置colormap分为100个level。对应代码为:
color = [pltget_cmap("seismic", 100)(int(float(i-min_v)/(max_v-min_v)100)) for i in v]
1
1
在代码中pltget_cmap("seismic",100)会得到一个colormap对象,然后使用pltget_cmap("seismic",100)(x)可以得到对应x级别的颜色代码值。例如:
a = pltget_cmap("seismic",100)(0)
b = pltget_cmap("seismic",100)(100)
print("a:", a)
print("b:", b)
1
2
3
4
1
2
3
4
输出结果为:
a: (00, 00, 03, 10)
b: (05, 00, 00, 10)
1
2
1
2
表示级别0对应的(r,g,b,alpha)颜色值为(00, 00, 03, 10),级别100对应的颜色值为(05, 00, 00, 10)。
如果需要使用其他类型的colormap,可以通过设置colormap名得到不同的效果,详细参考博客python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条。
2 设置三维散点格式
通过设置plot格式:
ax = figadd_subplot(111,projection='3d')
1
1
再使用scatter()函数绘制三维散点图:
im = axscatter(x, y, z, s=100,c=color,marker='')
1
1
其中s=100为设置点的大小、c=color为设置点的颜色,marker=''为设置点的形状(此处为实心圆点)。
3 设置侧边colorbar
根据数据的格式,我们需要设置侧边colorbar显示的数值范围,例如,本例中最小值为825,最大值为784179。代码中使用lambda表达式计算显示的值,默认显示的值为[0,1],因此需要使用lambda公式将显示的值调整到[825,784179]。代码如下:
figcolorbar(im, format=matplotlibtickerFuncFormatter(lambda x,pos:int(x(max_v-min_v)+min_v)))
1
1
另外为了使点的颜色与colorbar颜色对应,需要使用
pltset_cmap(pltget_cmap("seismic", 100))
1
1
使的clormap和colorbar具有同样的类型。
四、参考
[1] MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar
[2] 三维散点图加colorbar
[3] python图像处理彩色映射
[4] matplotlib的colorbar自定义刻度范围
[5] Python中lambda的使用
工具:win10系统
步骤:
Adobe Reader装在D盘,D:\Program Files\Adobe\Reader 110\Resource\CMap,首先在D盘打开文件的属性。
点击安全选型卡,可以看到,everyone没有完全控制的权限。
然后在下方的完全控制点击,完成勾选状态。
之后,连续点击确定,直至属性对话框消失。然后,点击删除,即可删除该文件。
:LINUX
一、首先,安装这些东西吧:apt-get install tetex-bin tetex-base tetex-extra cjk-latex
dvipdfm-cjk-cmap dvipdfm-cjk dvipdfm texmf-zh gbkfonts gs-cjk-resource,最好还有texlive的那一部分,反正我是装了的。
二、然后是那几个sim的字体,最好把它安装在你的Debian里面(我的Debian安了好几个漂亮的字体,当然包括这几个基本的sim字体)。
接下来,去王垠那下载gbkfonts,主要是那个静态链接文件,直接把它放在/usr/bin里面,然后你就可以生成字体了:
$mkdir texmf-local
$cd texmf-local
$gbkfonts /usr/share/fonts/truetype/microsoft/simsunttf song
$gbkfonts /usr/share/fonts/truetype/microsoft/simheittf hei
那几个sim字体都这样处理,这个过程最好是普通用户的权限来执行。
三、下面为dvips设置字体
$mkdir dvips/config
$mv cjkmap dvips/
$cp /usr/share/texmf/dvips/config/config dvips/config/
添加一个文件configcjk,内容是p +cjkmap
四、pdftex设置字体
这时,我的pdftex字体已经可以了,如果你的还不行的话,按下面的做:
$cp /usr/share/texmf/pdftex/config/pdftexcfg pdftex/config/
$cat pdftexcfg >> pdftex/config/pdftexcfg
五、更新字体数据库
换root来做:
#cp -r texmf-local /usr/local/share/texmf
#mkdir /usr/local/share/texmf/fonts/truetype
#cd /usr/local/share/texmf/fonts/truetype
#cp /usr/share/fonts/truetype/microsoft/sim /
当然,这里的最后一步,你也可以用软链接来做,ln -s 。
2018-05-04 11:11:36
122点赞
qiurisiyu2016
码龄7年
关注
matplotlib
1、pltplot(x,y)
pltplot(x,y,format_string,kwargs)
x轴数据,y轴数据,format_string控制曲线的格式字串
format_string 由颜色字符,风格字符,和标记字符
import matplotlibpyplot as plt
pltplot([1,2,3,6],[4,5,8,1],’g-s’)
pltshow()
结果
kwards:
color 颜色
linestyle 线条样式
marker 标记风格
markerfacecolor 标记颜色
markersize 标记大小 等等
pltplot([5,4,3,2,1])
pltshow()
结果
pltplot([20,2,40,6,80]) #缺省x为[0,1,2,3,4,]
pltshow()
结果
pltplot()参数设置
Property Value Type
alpha 控制透明度,0为完全透明,1为不透明
animated [True False]
antialiased or aa [True False]
clip_box a matplotlibtransformBbox instance
clip_on [True False]
clip_path a Path instance and a Transform instance, a Patch
color or c 颜色设置
contains the hit testing function
dash_capstyle [‘butt’ ‘round’ ‘projecting’]
dash_joinstyle [‘miter’ ‘round’ ‘bevel’]
dashes sequence of on/off ink in points
data 数据(nparray xdata, nparray ydata)
figure 画板对象a matplotlibfigureFigure instance
label 图示
linestyle or ls 线型风格[‘-’ ‘–’ ‘-’ ‘:’ ‘steps’ …]
linewidth or lw 宽度float value in points
lod [True False]
marker 数据点的设置[‘+’ ‘,’ ‘’ ‘1’ ‘2’ ‘3’ ‘4’]
markeredgecolor or mec any matplotlib color
markeredgewidth or mew float value in points
markerfacecolor or mfc any matplotlib color
markersize or ms float
markevery [ None integer (startind, stride) ]
picker used in interactive line selection
pickradius the line pick selection radius
solid_capstyle [‘butt’ ‘round’ ‘projecting’]
solid_joinstyle [‘miter’ ‘round’ ‘bevel’]
transform a matplotlibtransformsTransform instance
visible [True False]
xdata nparray
ydata nparray
zorder any number
确定x,y值,将其打印出来
x=nplinspace(-1,1,5)
y=2x+1
pltplot(x,y)
pltshow()
2、pltfigure()用来画图,自定义画布大小
fig1 = pltfigure(num='fig111111', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
pltplot(x,y1) #在变量fig1后进行pltplot *** 作,图形将显示在fig1中
fig2 = pltfigure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
pltplot(x,y2) #在变量fig2后进行pltplot *** 作,图形将显示在fig2中
pltshow()
pltclose()
结果
fig1 = pltfigure(num='fig111111', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
pltplot(x,y1)
pltplot(x,y2)
fig2 = pltfigure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
pltshow()
pltclose()
结果:
3、pltsubplot(222)
将figure设置的画布大小分成几个部分,参数‘221’表示2(row)x2(colu),即将画布分成2x2,两行两列的4块区域,1表示选择图形输出的区域在第一块,图形输出区域参数必须在“行x列”范围 ,此处必须在1和2之间选择——如果参数设置为subplot(111),则表示画布整个输出,不分割成小块区域,图形直接输出在整块画布上
pltsubplot(222)
pltplot(y,xx) #在2x2画布中第二块区域输出图形
pltshow()
pltsubplot(223) #在2x2画布中第三块区域输出图形
pltplot(y,xx)
pltsubplot(224) # 在在2x2画布中第四块区域输出图形
pltplot(y,xx)
4、pltxlim设置x轴或者y轴刻度范围
如
pltxlim(0,1000) # 设置x轴刻度范围,从0~1000 #lim为极限,范围
pltylim(0,20) # 设置y轴刻度的范围,从0~20
5、pltxticks():设置x轴刻度的表现方式
fig2 = pltfigure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
pltplot(x,y2)
pltxticks(nplinspace(0,1000,15,endpoint=True)) # 设置x轴刻度
pltyticks(nplinspace(0,20,10,endpoint=True))
结果
6、ax2set_title('xxx')设置标题,画图
#产生[1,2,3,,9]的序列
x = nparange(1,10)
y = x
fig = pltfigure()
ax1 = figadd_subplot(221)
#设置标题
ax1set_title('Scatter Plot1')
pltxlabel('M')
pltylabel('N')
ax2 = figadd_subplot(222)
ax2set_title('Scatter Plot2clf')
#设置X轴标签
pltxlabel('X') #设置X/Y轴标签是在对应的figure后进行 *** 作才对应到该figure
#设置Y轴标签
pltylabel('Y')
#画散点图
ax1scatter(x,y,c = 'r',marker = 'o') #可以看出画散点图是在对figure进行 *** 作
ax2scatter(x,y,c = 'b',marker = 'x')
#设置图标
pltlegend('show picture x1 ')
#显示所画的图
pltshow()
结果
7、plthist()绘制直方图(可以将高斯函数这些画出来)
绘图都可以调用matplotlibpyplot库来进行,其中的hist函数可以直接绘制直方图
调用方式:
n, bins, patches = plthist(arr, bins=10, normed=0, facecolor='black', edgecolor='black',alpha=1,histtype='bar')
hist的参数非常多,但常用的就这六个,只有第一个是必须的,后面四个可选
arr: 需要计算直方图的一维数组
bins: 直方图的柱数,可选项,默认为10
normed: 是否将得到的直方图向量归一化。默认为0
facecolor: 直方图颜色
edgecolor: 直方图边框颜色
alpha: 透明度
histtype: 直方图类型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直方图向量,是否归一化由参数normed设定
bins: 返回各个bin的区间范围
patches: 返回每个bin里面包含的数据,是一个list
from skimage import data
import matplotlibpyplot as plt
img=datacamera()
pltfigure("hist")
arr=imgflatten()
n, bins, patches = plthist(arr, bins=256, normed=1,edgecolor='None',facecolor='red')
pltshow()
例:
mu, sigma = 0, 1
s = nprandomnormal(loc=mu, scale=sigma, size=1000)
a,b,c = plthist(s, bins=3)
print("a: ",a)
print("b: ",b)
print("c: ",c)
pltshow()
结果:
a: [ 85 720 195] #每个柱子的值
b: [-036109509 -01357318 008963149 031499478] #每个柱的区间范围
c: <a list of 3 Patch objects> #总共多少柱子
8、ax1scatter(x,y,c = 'r',marker = 'o')
使用注意:确定了figure就一定要确定象限,然后用scatter,或者不确定象限,直接使用pltscatter
x = nparange(1,10)
y = x
fig = pltfigure()
a=pltsubplot() #默认为一个象限
# a=figadd_subplot(222)
ascatter(x,y,c='r',marker='o')
pltshow()
结果
x = nparange(1,10)
y = x
pltscatter(x,y,c='r',marker='o')
pltshow()
结果
import numpy as np
import matplotlibpyplot as plt
x = nparange(1,10)
y = x
pltfigure()
pltscatter(x,y,c='r',marker='o')
pltshow()
结果
文章知识点与官方知识档案匹配
Python入门技能树基础语法函数
211242 人正在系统学习中
打开CSDN APP,看更多技术内容
plt的一些函数的使用_班花i的博客_plt函数
plt函数 Fwuyi的博客 6513 1pltfigure( )函数:创建画布 2pltplot(x, y, format_string, label="图例名"):绘制点和线, 并控制样式。 其中x是x轴数据,y是y轴数据,xy一般是列表和数组。format_string 是字符串的格式包括线
继续访问
Python的数据科学函数包(三)——matplotlib(plt)_hxxjxw的博客
import matplotlibpyplot as plt pltimshow(img) pltshow() pltimshow()有一个cmap参数,即指定颜色映射规则。默认的cmap即颜料板是十色环 哪怕是单通道图,值在0-1之间,用pltimshow()仍然可以显示彩色图,就是因为颜色映射的关
继续访问
对Python中plt的画图函数详解
今天小编就为大家分享一篇对Python中plt的画图函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
pltplot()函数详解
pltplot()函数详细介绍 pltplot(x, y, format_string, kwargs) 参数 说明 x X轴数据,列表或数组,可选 y Y轴数据,列表或数组 format_string 控制曲线的格式字符串,可选 kwargs 第二组或更多(x,y,format_string),可画多条曲线 format_string 由颜色字符、风格字符、标记字符组成 颜色字符 'b' 蓝色 'm' 洋红色 magenta 'g' 绿色 'y
继续访问
python图像处理基础知识(plt库函数说明)_小草莓爸爸的博客_p
1画图(plt库)11 pltfigure(num=’’,figsize=(x, y),dpi= ,facecolor=’’,edgecolor=’’)num:表示整个图标的标题 figsize:表示尺寸 facecolor:表示12 pltplot(x,y,format_string,kwargs)
继续访问
plt的一些函数使用_neo3301的博客_plt函数
1、pltplot(x,y) pltplot(x,y,format_string,kwargs) x轴数据,y轴数据,format_string控制曲线的格式字串 format_string 由颜色字符,风格字符,和标记字符 import matplotlibpyplot as plt
继续访问
最新发布 python plt 绘图详解(plt版本)
python plt绘图详解
继续访问
python图像处理基础知识(plt库函数说明)
import matplotlibpyplot as plt的一些基础用法,包括直方图
继续访问
pltsubplot() 函数解析_Ensoleile。的博客_pltsubplot
pltsubplot()函数用于直接制定划分方式和位置进行绘图。 函数原型 subplot(nrows, ncols, index, kwargs),一般我们只用到前三个参数,将整个绘图区域分成 nrows 行和 ncols 列,而 index 用于对子图进行编号。
继续访问
中plt的画图函数_Ethan的博客的博客_python的plt函数
1、pltlegend pltlegend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应方式) 'upper right' : 1, 'upper left' : 2, 'lower left' : 3, 'lower right' : 4,
继续访问
plt函数
1 pltfigure( ) 函数:创建画布 2 pltplot(x, y, format_string, label="图例名"):绘制点和线, 并控制样式。 其中x是x轴数据,y是y轴数据,xy一般是列表和数组。format_string 是字符串的格式包括线条颜色、点类型、线类型三个部分。向参数label传入图例名,使用pltlegend( )创建图例。 21 画一条含x、y的线条 import matplotlibpyplot as plt x = [1, 2, 3, 4] y
继续访问
Python深度学习入门之plt画图工具基础使用(注释详细,超级简单)
Python自带的plt是深度学习最常用的库之一,在发表文章时必然得有图作为支撑,plt为深度学习必备技能之一。作为深度学习入门,只需要掌握一些基础画图 *** 作即可,其他等要用到的时候看看函数API就行。 1 导入plt库(名字长,有点难记) import matplotlibpyplot as plt 先随便画一个图,保存一下试试水: pltfigure(figsize=(12,8), dpi=80) pltplot([1,2,6,4],[4,5,6,9]) pltsavefig('/plt_pn
继续访问
python画图plt函数学习_dlut_yan的博客_python plt
figure()函数可以帮助我们同时处理生成多个图,而subplot()函数则用来实现,在一个大图中,出现多个小的子图。 处理哪个figure,则选择哪个figure,再进行画图。 参考博客 importmatplotlibpyplotaspltimportnumpyasnp x=nparange(-1,1,01
继续访问
pltplot()函数_安之若醇的博客_pltplot()函数
pltplot()函数是matplotlibpyplot用于画图的函数传一个值列表:import numpy as npimport matplotlibpyplot as pltt=[1,2,3,4,5]y=[3,4,5,6,7]pltplot(t, y)当x省略的时候,默认[0,1…,N-1]递增可以传元组也可以传
继续访问
python画图plt函数学习
python中的绘图工具 :matplotli,专门用于画图。 一 安装与导入 工具包安装:conda install matplotli 导入:import matplotlibpyplot as plt 画图主要有:列表绘图;多图绘图;数组绘图 二 列表绘图 1 基础绘图:pltplot;pltshow import matplotlibpyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] pltplot(x, y) pltshow()
继续访问
python中plt的含义_对Python中plt的画图函数详解
1、pltlegendpltlegend(loc=0)#显示图例的位置,自适应方式说明:'best' : 0, (only implemented for axes legends)(自适应方式)'upper right' : 1,'upper left' : 2,'lower left' : 3,'lower right' : 4,'right' : 5,'cent
继续访问
Python中plt绘图包的基本使用方法
其中,前两个输入参数表示x轴和y轴的坐标,plot函数将提供的坐标点连接,即成为要绘制的各式线型。常用的参数中,figsize需要一个元组值,表示空白画布的横纵坐标比;pltxticks()和pltyticks()函数用于设置坐标轴的步长和刻度。pltxlabel()、pltylabel()和plttitle()函数分别用于设置x坐标轴、y坐标轴和图标的标题信息。的数据处理时,发现了自己对plt的了解和使用的缺失,因此进行一定的基础用法的学习,方便之后自己的使用,而不需要频繁的查阅资料。
继续访问
python-pltxticks与pltyticks
栗子: pltfigure(figsize=(10, 10)) for i in range(25): pltsubplot(5, 5, i+1) pltxticks([]) pltyticks([]) pltgrid(False) pltimshow(train_images[i], cmap=pltcmbinary) pltxlabel(class_names[train_labels[i]]) pltshow() 设置x或y轴对应显
继续访问
plt绘图总结
matplotlib绘图
继续访问
Python的数据科学函数包(三)——matplotlib(plt)
>
以上就是关于使用三维图描述颜色怎么写全部的内容,包括:使用三维图描述颜色怎么写、win10系统中怎么删除Adobe Reader残余文件夹CMap、pdftex无法编译中文等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)