小編寫這篇文章的主要目的,主要是來給大家對Python的一些相關的知識,其內容主要有Matplotlib庫圖繪制方法的一些介紹。關于其具體的內容,下面就給大家詳細的做出一個解答。
中文字體設置:
#字體設置 plt.rcParams['font.sans-serif']=["SimHei"] plt.rcParams["axes.unicode_minus"]=False
1、基本使用
Matplotlib:是一個Python的2D繪圖庫,通過Matplotlib,開發者可以僅需要幾行代碼,便可以生成折線圖,直方圖,條形圖,餅狀圖,散點圖等。
plot是一個畫圖的函數,他的參數:plot([x],y,[fmt],data=None,**kwargs)
1.1、線條樣式&顏色
(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')#將顏色線條設置成紅色
運行結果:
1.2、軸&標題
1、設置圖標題:plt.title
2、設置軸標題:plt.xlabel&plt.ylabel-標題名稱
3、設置軸刻度:plt.xticks&plt.yticks-刻度長度,刻度標題
范例:
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
運行結果:
1.3、marker設置
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)
1.4、注釋文本
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), )
運行結果:
1.5、設置圖形樣式
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')
運行結果:
2、條形圖
應用場景:
1.數量統計。
2.頻率統計。
相關參數:
barh:條形圖
1.`x`:一個數組或者列表,代表需要繪制的條形圖的x軸的坐標點。
2.`height`:一個數組或者列表,代表需要繪制的條形圖y軸的坐標點。
3.`width`:每一個條形圖的寬度,默認是0.8的寬度。
4.`bottom`:`y`軸的基線,默認是0,也就是距離底部為0.
5.`align`:對齊方式,默認是`center`,也就是跟指定的`x`坐標居中對齊,還有為`edge`,靠邊對齊,具體靠右邊還是靠左邊,看`width`的正負。
6.`color`:條形圖的顏色。
2.1、橫向條形圖范例
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()
運行結果:
2.2、分組條形圖
范例:
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()
運行結果:
2.3、堆疊條形圖
范例:
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()
運行結果:
3、直方圖
plt.hist:直方圖
1.x:數組或者可以循環的序列;
2.bins:數字或者序列(數組/列表等);
3.range:元組或者None,如果為元組,那么指定`x`劃分區間的最大值和最小值;
4.density:默認是`False`,如果等于`True`,那么將會使用頻率分布直方圖;
5.cumulative:如果這個和`density`都等于`True`,那么返回值的第一個參數會不斷的累加,最終等于`1`。
應用場景:
1.顯示各組數據數量分布的情況。
2.用于觀察異常或孤立數據。
3.抽取的樣本數量過小,將會產生較大誤差,可信度低,也就失去了統計的意義。因此,樣本數不應少于50個。
3.1、直方圖
范例:
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()
運行結果:
3.2、頻率直方圖
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))
運行結果:
3.3、直方圖
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))
運行結果:
4、散點圖
plt.scatter:散點圖繪制:
1.x,y:分別是x軸和y軸的數據集。兩者的數據長度必須一致。
2.s:點的尺寸。
3.c:點的顏色。
4.marker:標記點,默認是圓點,也可以換成其他的。
范例:
plt.scatter(x=data_month_sum["sumprice"]#傳入X變量數據 ,y=data_month_sum["Quantity"]#傳入Y變量數據 ,marker='*'#點的形狀 ,s=10#點的大小 ,c='r'#點的顏色 ) plt.show()
運行結果:
5、餅圖
餅圖:一個劃分為幾個扇形的圓形統計圖表,用于描述量、頻率或百分比之間的相對關系的。
在matplotlib中,可以通過plt.pie來實現,其中的參數如下:
x:餅圖的比例序列。labels:餅圖上每個分塊的名稱文字。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()
運行結果:
6、箱線圖
箱圖的繪制方法是:
:1、先找出一組數據的上限值、下限值、中位數(Q2)和下四分位數(Q1)以及上四分位數(Q3)
:2、然后連接兩個四分位數畫出箱子
:3、再將最大值和最小值與箱子相連接,中位數在箱子中間。
中位數:把數據按照從小到大的順序排序,然后最中間的那個值為中位數,如果數據的個數為偶數,那么就是最中間的兩個數的平均數為中位數。
上下四分位數:同樣把數據排好序后,把數據等分為4份。出現在`25%`位置的叫做下四分位數,出現在`75%`位置上的數叫做上四分位數。但是四分位數位置的確定方法不是固定的,有幾種算法,每種方法得到的結果會有一定差異,但差異不會很大。
上下限的計算規則是:
IQR=Q3-Q1
上限=Q3+1.5IQR
下限=Q1-1.5IQR
在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()
運行結果:
7、雷達圖
雷達圖:又被叫做蜘蛛網圖,適用于顯示三個或更多的維度的變量的強弱情況
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來設置。
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128401.html
摘要:由于線性回歸作用于股票收盤價的整個周期,因此選擇合適的時間段非常重要。在制定量化交易策略時有一種方式是尋找現象中的特征,根據特征去生成交易條件。 新年伊始,很榮幸筆者的《教你用 Python 進階量化交易》專欄在慕課專欄板塊上線了,歡迎大家訂閱!為了能夠提供給大家更輕松的學習過程,筆者在專欄內容之外會陸續推出一些手記來輔助同學們學習本專欄內容,因此同學們無需擔心專欄內容在學習上的困難,...
Python Matplotlib作為一種可視化的工具,可以利用其可視化的應用,去做到繪制圖形,比如可以利用其Matplotlib去進行繪制圖形,具體的操作方法要做到什么樣呢?下面就給大家詳細解答下。 前言 Matplotlib可能是Python 2D-繪圖領域使用最廣泛的套件。它能讓使用者很輕松地將數據圖形化,并且提供多樣化的輸出格式。這里將會探索使用matplotlib庫實現簡單的圖形...
小編寫這篇文章的一個主要目的,主要是來給大家去做一個相關的自我介紹,介紹關于python是怎么進行數學建模的,怎么使用Matpolibd呢?具體的使用方法是什么呢?下面就給大家詳細的去做一個解答。 Matplotlib簡介 #Matplotlib簡介: ''' 使用Matplotlib在Python中創建圖表【Matplotlib是用于創建圖表的Python...
摘要:有一些表示常見圖形的對象稱為塊,完整的集合位于。中的繪圖函數在中,有行標簽列標簽分組信息。密度圖通過計算可能會產生觀測數據的連續概率分布的估計而產生的。在探索式數據分析工作中,同時觀察一組變量的散布圖是很有意義的。 我們在上一篇介紹了 pandas,本篇介紹 matplotlib。 繪圖和可視化 一個用于創建出版質量圖表的桌面繪圖包。 Matplotlib API入門 Figure ...
摘要:用實現微信好友性別及位置信息統計這里使用的庫開發。使用圖靈機器人自動與指定好友聊天讓室友幫忙測試發現發送表情發送文字還能回應,但是發送圖片可能不會回復,猜應該是我們申請的圖靈機器人是最初級的沒有加圖片識別功能。 1.用 Python 實現微信好友性別及位置信息統計 這里使用的python3+wxpy庫+Anaconda(Spyder)開發。如果你想對wxpy有更深的了解請查看:wxpy...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02