<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
中文字型設定:
# 字型設定 plt.rcParams['font.sans-serif'] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False
Matplotlib:是一個Python的2D繪相簿,通過Matplotlib,開發者可以僅需要幾行程式碼,便可以生成折線圖,直方圖,條形圖,餅狀圖,散點圖等。plot
是一個畫圖的函數,他的引數:plot([x],y,[fmt],data=None,**kwargs)
(1)點線形式
(2)線條顏色
import matplotlib.pyplot as plt import numpy as np # 原始線圖 plt.plot(range(10),[np.random.randint(0,10) for x in range(10)]) # 點線圖 plt.plot(range(10),[np.random.randint(0,10) for x in range(10)],"*") # 線條顏色 plt.plot([1,2,3,4,5],[1,2,3,4,5],'r') #將顏色線條設定成紅色
執行結果:
範例:
x = range(10) y = [np.random.randint(0,10) for x in range(10)] plt.plot(x,y,linewidth=10,color='red') # 設定圖示題 plt.title("sin函數") # 設定軸標題 plt.xlabel("x軸") plt.ylabel("y軸") # 設定軸刻度 plt.xticks(range(10),["第%d天"%x for x in range(1,10)]) plt.yticks(range(10),["第%d天"%x for x in range(1,10)]) # 載入字型 plt.rcParams['font.sans-serif'] = ["SimHei"] plt.rcParams["axes.unicode_minus"] = False
執行結果:
marker:關鍵點重點標記
範例:
x = range(10) y = [np.random.randint(0,10) for x in range(10)] plt.plot(x,y,linewidth=10,color='red') # 重點標記 plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)
執行結果:
annotate:註釋文字
範例:
x = range(10) y = [np.random.randint(0,10) for x in range(10)] plt.plot(x,y,linewidth=10,color='red') # 重點標記 plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10) # 註釋文字設定 plt.annotate('local max', xy=(5, 5), xytext=(10,15), arrowprops=dict(facecolor='black',shrink=0.05), )
執行結果:
plt.figure:調整圖片的大小和畫素 `num`:圖的編號, `figsize`:單位是英寸, `dpi`:每英寸的畫素點, `facecolor`:圖片背景顏色, `edgecolor`:邊框顏色, `frameon`:是否繪製畫板。
範例:
x = range(10) y = [np.random.randint(0,10) for x in range(10)] # 設定圖形樣式 plt.figure(figsize=(20,10),dpi=80) plt.plot(x,y,linewidth=10,color='red')
執行結果:
應用場景:
相關引數:
barh:條形圖
movies = { "流浪地球":40.78, "飛馳人生":15.77, "瘋狂的外星人":20.83, "新喜劇之王":6.10, "廉政風雲":1.10, "神探蒲松齡":1.49, "小豬佩奇過大年":1.22, "熊出沒·原始時代":6.71 } plt.barh(np.arange(len(movies)),list(movies.values())) plt.yticks(np.arange(len(movies)),list(movies.keys()),fontproperties=font) plt.grid()
執行結果:
範例:
movies = { "流浪地球":[2.01,4.59,7.99,11.83,16], "飛馳人生":[3.19,5.08,6.73,8.10,9.35], "瘋狂的外星人":[4.07,6.92,9.30,11.29,13.03], "新喜劇之王":[2.72,3.79,4.45,4.83,5.11], "廉政風雲":[0.56,0.74,0.83,0.88,0.92], "神探蒲松齡":[0.66,0.95,1.10,1.17,1.23], "小豬佩奇過大年":[0.58,0.81,0.94,1.01,1.07], "熊出沒·原始時代":[1.13,1.96,2.73,3.42,4.05] } plt.figure(figsize=(20,8)) width = 0.75 bin_width = width/5 movie_pd = pd.DataFrame(movies) ind = np.arange(0,len(movies)) # 第一種方案 for index in movie_pd.index: day_tickets = movie_pd.iloc[index] xs = ind-(bin_width*(2-index)) plt.bar(xs,day_tickets,width=bin_width,label="第%d天"%(index+1)) for ticket,x in zip(day_tickets,xs): plt.annotate(ticket,xy=(x,ticket),xytext=(x-0.1,ticket+0.1)) # 設定圖例 plt.ylabel("單位:億") plt.title("春節前5天電影票房記錄") # 設定x軸的座標 plt.xticks(ind,movie_pd.columns) plt.xlim plt.grid(True) plt.show()
執行結果:
範例:
menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) groupNames = ('G1','G2','G3','G4','G5') xs = np.arange(len(menMeans)) plt.bar(xs,menMeans) plt.bar(xs,womenMeans,bottom=menMeans) plt.xticks(xs,groupNames) plt.show()
執行結果:
plt.hist:直方圖
應用場景:
範例:
durations = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150] plt.figure(figsize=(15,5)) nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k') plt.xticks(bins,bins) for num,bin in zip(nums,bins): plt.annotate(num,xy=(bin,num),xytext=(bin+1.5,num+0.5)) plt.show()
執行結果:
density:頻率直方分佈圖
範例:
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True) plt.xticks(bins,bins) for num,bin in zip(nums,bins): plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))
執行結果:
cumulative引數:nums的總和為1
範例:
plt.figure(figsize=(15,5)) nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True) plt.xticks(bins,bins) for num,bin in zip(nums,bins): plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))
執行結果:
plt.scatter:散點圖繪製:
範例:
plt.scatter(x =data_month_sum["sumprice"] #傳入X變數資料 ,y=data_month_sum["Quantity"] #傳入Y變數資料 ,marker='*' #點的形狀 ,s=10 #點的大小 ,c='r' #點的顏色 ) plt.show()
執行結果:
餅圖:一個劃分為幾個扇形的圓形統計圖表,用於描述量、頻率或百分比之間的相對關係的。
在matplotlib
中,可以通過plt.pie
來實現,其中的引數如下:
x
:餅圖的比例序列。labe
ls
:餅圖上每個分塊的名稱文字。explode
:設定某幾個分塊是否要分離餅圖。autopct
:設定比例文字的展示方式。比如保留幾個小數等。shadow
:是否顯示陰影。textprops
:文字的屬性(顏色,大小等)。 範例
plt.figure(figsize=(8,8),dpi=100,facecolor='white') plt.pie(x = StockCode.values, #資料傳入 radius=1.5, #半徑 autopct='%.2f%%' #百分比顯示 ,pctdistance=0.6, #百分比距離圓心比例 labels=StockCode.index, #標籤 labeldistance=1.1, #標籤距離圓心比例 wedgeprops ={'linewidth':1.5,'edgecolor':'green'}, #邊框的線寬和顏色 textprops={'fontsize':10,'color':'blue'}) #文字字型大小和顏色 plt.title('商品銷量佔比',pad=100) #設定標題及距離座標軸的位置 plt.show()
執行結果:
箱圖的繪製方法是:
中位數:把資料按照從小到大的順序排序,然後最中間的那個值為中位數,如果資料的個數為偶數,那麼就是最中間的兩個數的平均數為中位數。
上下四分位數:同樣把資料排好序後,把資料等分為4份。出現在`25%`位置的叫做下四分位數,出現在`75%`位置上的數叫做上四分位數。但是四分位數位置的確定方法不是固定的,有幾種演演算法,每種方法得到的結果會有一定差異,但差異不會很大。
上下限的計算規則是:
在matplotlib
中有plt.boxplot
來繪製箱線圖,這個方法的相關引數如下:
x
:需要繪製的箱線圖的資料。notch
:是否展示置信區間,預設是False
。如果設定為True
,那麼就會在盒子上展示一個缺口。sym
:代表異常點的符號表示,預設是小圓點。vert
:是否是垂直的,預設是True
,如果設定為False
那麼將水平方向展示。whis
:上下限的係數,預設是1.5
,也就是上限是Q3+1.5IQR
,可以改成其他的。也可以為一個序列,如果是序列,那麼序列中的兩個值分別代表的就是下限和上限的值,而不是再需要通過IQR
來計算。positions
:設定每個盒子的位置。widths
:設定每個盒子的寬度。labels
:每個盒子的label
。meanline
和showmeans
:如果這兩個都為True
,那麼將會繪製平均值的的線條。
範例:
#箱線圖 - 主要觀察資料是否有異常(離群點) #箱須-75%和25%的分位數+/-1.5倍分位差 plt.figure(figsize=(6.4,4.8),dpi=100) #是否填充箱體顏色,是否展示均值,是否展示異常值,箱體設定,異常值設定,均值設定,中位數設定 plt.boxplot(x=UnitPrice #傳入資料 ,patch_artist=True #是否填充箱體顏色 ,showmeans=True #是否展示均值 ,showfliers=True #是否展示異常值 ,boxprops={'color':'black','facecolor':'white'} #箱體設定 ,flierprops={'marker':'o','markersize':4,'markerfacecolor':'red'} #異常值設定 ,meanprops={'marker':'o','markersize':6,'markerfacecolor':'indianred'} #均值設定 ,medianprops={'linestyle':'--','color':'blue'} #中位數設定 ) plt.show()
執行結果:
雷達圖:又被叫做蜘蛛網圖,適用於顯示三個或更多的維度的變數的強弱情況
plt.polar來繪製雷達圖,x
軸的座標點應該為弧度(2*PI=360°)
範例:
import numpy as np properties = ['輸出','KDA','發育','團戰','生存'] values = [40,91,44,90,95,40] theta = np.linspace(0,np.pi*2,6) plt.polar(theta,values) plt.xticks(theta,properties) plt.fill(theta,values)
執行結果:
注意事項:
polar
並不會完成線條的閉合繪製,所以我們在繪製的時候需要在theta
中和values
中在最後多重複新增第0個位置的值,然後在繪製的時候就可以和第1個點進行閉合了。polar
只是繪製線條,所以如果想要把裡面進行顏色填充,那麼需要呼叫fill
函數來實現。polar
預設的圓圈的座標是角度,如果我們想要改成文字顯示,那麼可以通過xticks
來設定。到此這篇關於Python進階Matplotlib庫圖繪製的文章就介紹到這了,更多相關Python Matplotlib庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45