在seaborn中,繪制散點(diǎn)圖的函數(shù)有 scatterplot 和 relplot 。
為阿勒泰等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及阿勒泰網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、阿勒泰網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
seaborn 繪制散點(diǎn)圖最簡(jiǎn)單的方式是使用 scatterplot 方法,指定 data 參數(shù)和 x 和 y 參數(shù)。
添加 hue 參數(shù),設(shè)置點(diǎn)的分組顏色。
添加 style 參數(shù),設(shè)置點(diǎn)的分組樣式。
添加 size 參數(shù),設(shè)置點(diǎn)的分組大小。
hue , style , size 參數(shù)可以同時(shí)設(shè)置多個(gè)。
分面散點(diǎn)圖用 relplot 方法繪制,需要設(shè)置 kind="scatter" ,然后使用 col , row 參數(shù)分面。
1. 繪制3D曲面圖
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax=Axes3D(fig)
x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
x,y=np.meshgrid(x,y)
r=np.sqrt(x**2, y**2)
z=np.sin(r)
//繪面函數(shù)
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=“rainbow”
plt.show()
2.繪制三維的散點(diǎn)圖(表述一些數(shù)據(jù)點(diǎn)分布)
4a.mat數(shù)據(jù)地址:http blog.csdn.net/eddy_zhang/article/details/50496164
from matplotlib import pyplot as plt
import scipy.io as sio
from mpl_toolkits.mplot3d import Axes3D
matl=‘4a.mat’
data=sio.loadmat(matl)
m=data[‘data’]
x,y,z=m[0],m[1],m[2]
//創(chuàng)建一個(gè)繪圖工程
ax=plt.subplot(111,project=‘3D’)
//將數(shù)據(jù)點(diǎn)分成三部分畫,在顏色上有區(qū)分度
ax.scatter(x[:1000], y[:1000], z[:1000],c=‘y’ )//繪制數(shù)據(jù)點(diǎn)
ax.scatter(x[1000:4000], y[1000:4000], z[1000:4000],c=‘r’ )//繪制數(shù)據(jù)點(diǎn)
ax.scatter(x[4000:], y[4000:], z[4000:],c=‘g’ )//繪制數(shù)據(jù)點(diǎn)
ax.set_zlable(‘z’)//坐標(biāo)軸
ax.set_ylable(‘y’)//坐標(biāo)軸
ax.set_xlable(‘x’)
plt.show()
接受自己的普通,然后全力以赴的出眾,告訴自己要努力,但不要著急....
當(dāng)然, 這個(gè)結(jié)果并不是我真正想要的,Pass, 太丑了!
好吧,安排,我們先看下實(shí)現(xiàn)后的效果!
這個(gè)效果自然就比之前的好多了!
實(shí)現(xiàn)python散點(diǎn)圖繪制需要用到matplotlib庫(kù), matplotlib庫(kù)是專門用于可視化繪圖的工具庫(kù);學(xué)習(xí)一個(gè)新的庫(kù)當(dāng)然看官方文檔了:
實(shí)現(xiàn)思路:
matplotlib.pyplot.scatter() 函數(shù)是專門繪制散點(diǎn)圖的函數(shù):
matplotlib.pyplot.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 , ***, data=None , ** kwargs ) **
plt.scatter(observation, estimate, c=Z1, cmap=colormap, marker=".", s=marker_size, norm=colors.LogNorm(vmin=Z1.min(), vmax=0.5 * Z1.max()))
其中:
1、c參數(shù)為計(jì)算的散點(diǎn)密度;
2、cmap為色帶(matplotlib里面自帶了很多色帶可供選擇),參見:
3、由于計(jì)算的散點(diǎn)密度數(shù)值大小分散,因此利用norm參數(shù)對(duì)散點(diǎn)密度Z1進(jìn)行歸一化處理(歸一化方式很多,參見colors類),并給歸一化方式設(shè)置色帶刻度的最大最小值vmin和vmax(一般這兩個(gè)參數(shù)就是指定散點(diǎn)密度的最小值和最大值),這樣就建立起了密度與色帶的映射關(guān)系。
(這里的結(jié)果與前面展示的相比改變了計(jì)算散點(diǎn)密度的半徑:radius = 3以及繪制散點(diǎn)圖的散點(diǎn)大小marksize)
作者能力水平有限,歡迎各位批評(píng)指正!
python matplotlib模塊,是擴(kuò)展的MATLAB的一個(gè)繪圖工具庫(kù)。他可以繪制各種圖形,可是最近最的一個(gè)小程序,得到一些三維的數(shù)據(jù)點(diǎn)圖,就學(xué)習(xí)了下python中的matplotlib模塊,如何繪制三維圖形。
初學(xué)者,可能對(duì)這些第三方庫(kù)安裝有一定的小問題,對(duì)于一些安裝第三方庫(kù)經(jīng)驗(yàn)較少的朋友,建議使用 Anaconda ,集成了很多第三庫(kù),基本滿足大家的需求,下載地址,對(duì)應(yīng)選擇python 2.7 或是 3.5 的就可以了(PS:后面的demo是python2.7):
首先提醒注意,以下兩個(gè)函數(shù)的區(qū)別:
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow') #繪面1
和
ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r') #繪點(diǎn)1
1、繪制3D曲面圖
# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:17:13 2015
@author: Eddy_zheng
"""from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)# 具體函數(shù)方法可用 help(function) 查看,如:help(ax.plot_surface)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()1234567891011121314151617181920212223
效果展示:
2、繪制三維的散點(diǎn)圖(通常用于表述一些數(shù)據(jù)點(diǎn)分布)
4a.mat 數(shù)據(jù)地址,找到4a.mat 下載即可:
# -*- coding: utf-8 -*-"""
Created on Thu Sep 24 16:37:21 2015
@author: Eddy_zheng
"""import scipy.io as sio ?
from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as plt
mat1 = '4a.mat' #這是存放數(shù)據(jù)點(diǎn)的文件,需要它才可以畫出來。上面有下載地址data = sio.loadmat(mat1)
m = data['data']
x,y,z = m[0],m[1],m[2]
ax=plt.subplot(111,projection='3d') #創(chuàng)建一個(gè)三維的繪圖工程#將數(shù)據(jù)點(diǎn)分成三部分畫,在顏色上有區(qū)分度ax.scatter(x[:1000],y[:1000],z[:1000],c='y') #繪制數(shù)據(jù)點(diǎn)ax.scatter(x[1000:4000],y[1000:4000],z[1000:4000],c='r')
ax.scatter(x[4000:],y[4000:],z[4000:],c='g')
ax.set_zlabel('Z') #坐標(biāo)軸ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()123456789101112131415161718192021222324252627
效果:
上面就是學(xué)習(xí)區(qū)分了下兩個(gè)函數(shù),當(dāng)時(shí)還被小困惑了下,希望對(duì)大家有所幫助。其實(shí)里面還有好多參數(shù)設(shè)置,比如說改變顏色,包括繪制點(diǎn)圖的點(diǎn)的形狀等都是可以改變的,有需要的大家可以自己看看這個(gè)函數(shù),學(xué)習(xí)下(help(對(duì)應(yīng)的function))。
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。Eddy_zheng