今天給大家分享一個(gè)經(jīng)典案例,那就是在Python matplotlib,如何完整的繪制成功一個(gè)散點(diǎn)圖,其實(shí),如果想要繪制的話,還是比較麻煩的。但是如果我們使用Python matplotlib的話,繪制的就會(huì)比較好,怎么繪制呢?下面就給大家詳細(xì)的解答下。
什么是散點(diǎn)圖?
所謂的散點(diǎn)圖,指的是在相關(guān)的數(shù)據(jù)分析當(dāng)中,數(shù)據(jù)會(huì)依次分布在直角坐標(biāo)系當(dāng)中,散點(diǎn)圖是變量跟著自變量去進(jìn)行變動(dòng),據(jù)此可以選擇合適的函數(shù)對(duì)數(shù)據(jù)點(diǎn)進(jìn)行擬合。
用組成的數(shù)據(jù),做成數(shù)據(jù)的相關(guān)集合點(diǎn),考察相關(guān)坐標(biāo)點(diǎn)的一個(gè)分布情況,判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式。
散點(diǎn)圖將序列顯示為一組點(diǎn)。值由點(diǎn)在圖表中的位置表示。類別由圖表中的不同標(biāo)記表示。散點(diǎn)圖通常用于比較跨類別的聚合數(shù)據(jù)。
下面給出一個(gè)散點(diǎn)圖的具體代碼案例
import matplotlib.pyplot as plt import pandas as pd import numpy as np plt.figure(figsize=(9,5),#(寬度,高度)單位inch dpi=120,#清晰度dot-per-inch #facecolor='#CCCCCC',#畫布底色 #edgecolor='black',linewidth=0.2,frameon=True,#畫布邊框 #frameon=False#不要畫布邊框 ) #設(shè)置全局中文字體 plt.rcParams['font.sans-serif']='KaiTi'#設(shè)置全局字體為中文楷體 plt.rcParams['axes.unicode_minus']=False#不使用中文減號(hào) #讀取數(shù)據(jù) crime=pd.read_csv("crimeRatesByState2005.csv") print(list(crime.murder))#轉(zhuǎn)化成列表 #刪除state為United States的數(shù)據(jù) crime2=crime[crime.state!="United States"] #刪除state為District of Columbia的數(shù)據(jù) crime2=crime2[crime2.state!="District of Columbia"] z=list(crime2.population/10000)#取人口數(shù)據(jù) #colors=np.random.rand(len(list(crime2.murder)))#根據(jù)謀殺率隨機(jī)去顏色 cm=plt.cm.get_cmap('RdYlBu')#使用色譜RdYlBu plt.scatter(list(crime2.murder),list(crime2.burglary),s=z,c=z,cmap=cm,linewidth=0.5,alpha=0.5)#繪制散點(diǎn)圖 plt.xlabel("murder") plt.ylabel("burglary") plt.show()
散點(diǎn)圖一行代碼顯示
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length'] y=df['sepal_width'] #根據(jù)X,Y值畫散點(diǎn)圖 plt.scatter(x,y)
加顏色的散點(diǎn)圖
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length'] y=df['sepal_width'] c=df['species'].map({'setosa':'r','versicolor':'g','virginica':'b'}) #根據(jù)X,Y值畫散點(diǎn)圖,用不同的顏色標(biāo)識(shí)不同的分類 plt.scatter(x,y,c=c)
顏色深淺表示數(shù)值大小
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length'] y=df['sepal_width'] c=df['petal_length'] #根據(jù)X,Y值畫散點(diǎn)圖,用顏色的深淺表示花萼的長(zhǎng)度 plt.scatter(x,y,c=c,cmap=plt.cm.RdYlBu)
散點(diǎn)圖顯示顏色和大小
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length']#x軸坐標(biāo) y=df['sepal_width']#y軸坐標(biāo) c=df['petal_length']#顏色color s=df['petal_width']#大小size #根據(jù)X,Y值畫散點(diǎn)圖,用顏色的深淺表示花萼的長(zhǎng)度,用大小表示花萼的寬度 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y,c=c,s=50)#可以是標(biāo)量,那么所有的點(diǎn)都一樣 plt.scatter(x,y,c=c,s=s*30)
自定義圖表散點(diǎn)圖
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') def get_xycs(df): #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length']#x軸坐標(biāo) y=df['sepal_width']#y軸坐標(biāo) c=df['petal_length']#顏色color s=df['petal_width']#大小size return x,y,c,s markers={'setosa':'o','versicolor':'D','virginica':'*'} #根據(jù)X,Y值畫散點(diǎn)圖,用顏色的深淺表示花萼的長(zhǎng)度,用大小表示花萼的寬度,每組數(shù)據(jù)只能是一種點(diǎn)樣式 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y,c=c,s=50)#可以是標(biāo)量,那么所有的點(diǎn)都一樣 for sp in df['species'].unique(): x,y,c,s=get_xycs(df[df['species']==sp]) plt.scatter(x,y,c=c,s=s*30,cmap=plt.cm.seismic,marker=markers[sp],label=sp) plt.legend()
散點(diǎn)圖萬能模板
#讀取數(shù)據(jù) df=pd.read_csv('iris.csv') def get_xycs(df): #平面坐標(biāo)系的位置只能表示2維數(shù)據(jù) x=df['sepal_length']#x軸坐標(biāo) y=df['sepal_width']#y軸坐標(biāo) c=df['petal_length']#顏色color s=df['petal_width']#大小size return x,y,c,s markers={'setosa':'o','versicolor':'D','virginica':'*'} #根據(jù)X,Y值畫散點(diǎn)圖,用顏色的深淺表示花萼的長(zhǎng)度,用大小表示花萼的寬度,每組數(shù)據(jù)只能是一種點(diǎn)樣式 plt.figure(figsize=(5,5),dpi=100) #plt.scatter(x,y,c=c,s=50)#可以是標(biāo)量,那么所有的點(diǎn)都一樣 for sp in df['species'].unique(): x,y,c,s=get_xycs(df[df['species']==sp]) plt.scatter(x,y,s=s*30,cmap=plt.cm.seismic,marker=markers[sp],label=sp) plt.legend()
其他模板
###在二維坐標(biāo)系上,位置表示(x,y)二維數(shù)據(jù) x=df.sepal_length#x表示花瓣長(zhǎng) y=df.sepal_width#y表示花瓣寬 s=(df.petal_length*df.petal_width)*np.pi#s(size)表示花萼面積 c=(df.petal_length*df.petal_width)*np.pi plt.scatter(x,y,s=s*5,c=c,cmap=plt.cm.RdYlBu_r) plt.xlabel('sepal_length') plt.ylabel('sepal_width')
#在二維坐標(biāo)系上,位置表示(x,y)二維數(shù)據(jù) x=df.sepal_length#x表示花瓣長(zhǎng) y=df.sepal_width#y表示花瓣寬 s=(df.petal_length*df.petal_width)*np.pi#s(size)表示花萼面積 #print(df.species) #colormap={"setosa":"#FF0000","versicolor":"green","virginica":"b"}#定義一個(gè)字典將species字符串映射到顏色字符串上 colormap={"setosa":1,"versicolor":5,"virginica":6}#定義一個(gè)字典將species字符串映射到顏色字符串上 c=df.species.map(colormap) #print(c) plt.scatter(x,y,s=s*5,c=c,cmap=plt.cm.coolwarm,alpha=0.7,edgecolors='face') plt.xlabel('sepal_length') plt.ylabel('sepal_width')
plt.scatter(df['burglary'],df['larceny_theft'], s=df['population']*2e-5, c=df['motor_vehicle_theft'],cmap=plt.cm.coolwarm, edgecolors='b', alpha=0.75) for idx,statename in df['state'].items(): plt.text(x=df['burglary'][idx],y=df['larceny_theft'][idx]-df['population'][idx]*2e-5*0.5,s=statename,fontsize=6,ha='center',va='top') df.plot.scatter(x='burglary',y='larceny_theft',c='motor_vehicle_theft',cmap=plt.cm.coolwarm,s=df['population']*2e-5) for i in df.index: if i in top5_motor_theft_index:#偷車賊最多的5個(gè)州 plt.text(df.loc[i,'burglary']+10,df.loc[i,'larceny_theft']-10,df.loc[i,'state'],color='red')#一個(gè)文本框
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/127977.html
摘要:繪制折線圖和散點(diǎn)圖要用到下的,因此我們需要先引入,因?yàn)橐玫綌?shù)組實(shí)現(xiàn),還要引入。如果讓折線圖和散點(diǎn)圖疊加還可以突出每個(gè)點(diǎn)。 1.繪制折線圖和散點(diǎn)圖要用到matplotlib下的pylab,因此我們需要先引入,因?yàn)橐玫綌?shù)組實(shí)現(xiàn),還要引入numpy。然后確定x軸和y軸的數(shù)據(jù),最后將其呈現(xiàn)出來。 import matplotlib.pylab as pyl import numpy as ...
摘要:刪除數(shù)據(jù)點(diǎn)的輪廓設(shè)置每個(gè)坐標(biāo)軸的取值范圍使用顏色映射允許你給散點(diǎn)圖中的各個(gè)點(diǎn)指定顏色。默認(rèn)為藍(lán)色點(diǎn)和黑色輪廓,在散點(diǎn)圖包含的數(shù)據(jù)點(diǎn)不多時(shí)效果很好。但繪制很多點(diǎn)時(shí),黑色輪廓可能會(huì)粘連在一起。 1.安裝matplotlib pip install matplotlib 2.繪制簡(jiǎn)單圖形 import matplotlib.pyplot as plt #圖形輸入值 input_values...
摘要:,繪制盒形圖,同樣指定對(duì)數(shù)據(jù)的分類。如果傳入則畫出的盒形圖是橫向的。繪制小提琴圖,表示是否將兩類數(shù)據(jù)分開繪制,如果為,則不分開繪制,默認(rèn)為。數(shù)據(jù)集數(shù)據(jù)集名。計(jì)算置信區(qū)間時(shí)使用的引導(dǎo)迭代次數(shù)整數(shù)。 seaborn是python中的一個(gè)非常強(qiáng)大的數(shù)據(jù)可視化庫,它集成了matplotlib,下圖為seaborn的官網(wǎng),如果遇到疑惑的地方可以到官網(wǎng)查看。http://seaborn.pydat...
摘要:,繪制盒形圖,同樣指定對(duì)數(shù)據(jù)的分類。如果傳入則畫出的盒形圖是橫向的。繪制小提琴圖,表示是否將兩類數(shù)據(jù)分開繪制,如果為,則不分開繪制,默認(rèn)為。數(shù)據(jù)集數(shù)據(jù)集名。計(jì)算置信區(qū)間時(shí)使用的引導(dǎo)迭代次數(shù)整數(shù)。 seaborn是python中的一個(gè)非常強(qiáng)大的數(shù)據(jù)可視化庫,它集成了matplotlib,下圖為seaborn的官網(wǎng),如果遇到疑惑的地方可以到官網(wǎng)查看。http://seaborn.pydat...
??蘇州程序大白一文從基礎(chǔ)手把手教你Python數(shù)據(jù)可視化大佬??《??記得收藏??》 目錄 ????開講啦?。。。????蘇州程序大白?????博主介紹前言數(shù)據(jù)關(guān)系可視化散點(diǎn)圖 Scatter plots折線圖強(qiáng)調(diào)連續(xù)性 Emphasizing continuity with line plots同時(shí)顯示多了圖表 數(shù)據(jù)種類的可視化 Plotting with categorical da...
閱讀 1170·2023-01-14 11:38
閱讀 1160·2023-01-14 11:04
閱讀 987·2023-01-14 10:48
閱讀 2538·2023-01-14 10:34
閱讀 1242·2023-01-14 10:24
閱讀 1124·2023-01-14 10:18
閱讀 736·2023-01-14 10:09
閱讀 818·2023-01-14 10:02