大家好,今天來為大家解答matlab入門教程pdf下載這個問題的一些問題點,包括matlab教程pdf百度網盤也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現在讓我們一起來看看吧!如果解決了您的問題,還望您關注下本站哦,謝謝~
如何高效地使用Matplotlib
引言
對新手來說Python可視化實在有些令人挫敗。有很多不同的選項,如何選擇正確的選項是一個挑戰。例如,兩年前這篇文章《OverviewofPythonVisualizationTools》(http://pbpython.com/visualization-tools-1.html)仍然吸引了大量讀者。在那篇文章中,我否定了Matplotlib。但是,在使用過pandas、scikit-learn、seaborn和其他Python數據科學棧之后,我覺得之前否認Matplotlib的行為有點不成熟。坦白講,當時我不是很了解Matplotlib,也不懂如何在我的工作流中高效使用Matplotlib。
現在我學習了一些工具,了解了如何用Matplotlib使用這些工具,Matplotlib逐漸變成了必需工具。本文將展示如何使用Matplotlib。我堅定地認為Matplotlib是Python數據科學棧必不可少的一部分,希望這篇文章可以幫助大家了解如何使用Matplotlib進行Python可視化。
為什么大家都在否定Matplotlib?
我認為,Matplotlib對于新手來說比較難存在幾個原因。首先,Matplotlib有兩個界面。第一個界面基于MATLAB,使用基于狀態的接口。第二個界面是面向對象的接口。本文就不展開介紹Matplotlib有兩個界面的原因,但了解這兩種方法在使用Matplotlib繪圖時會很重要。兩個界面會引起混淆的原因是堆棧溢出和通過谷歌搜索獲取的大量信息,新用戶將發現問題的多個解決方案,但是這些問題看起來類似卻不完全相同。從我的個人經驗來講,從以前的代碼中,我可以看出有一些Matplotlib代碼的混雜,我對此感覺很疑惑(盡管寫它們的人是我……):-)
關鍵點
Matplotlib新手應該學習和使用面向對象的接口。
使用Matplotlib的另一個歷史性挑戰是一些默認的樣式缺乏吸引力。在R使用ggplot就可以生成相當不錯的圖的世界中,Matplotlib相對來說有點丑。好消息是Matplotlib2.0中的樣式好看了很多,你可以用最小的努力生成可視化。
第三個挑戰是你不確定什么時候該使用Matplotlib,什么時候該使用基于Matplotlib構建的工具,如pandas或seaborn。大部分時候做一件事都有多種選擇,但是對于新手來說選擇正確的道路有些困難。這種混淆加上兩種不同API的混淆簡直就是挫敗本敗了……
為什么使用Matplotlib?
盡管Matplotlib有這么多問題,我還是喜歡用它,因為它很強大。這個庫允許你創建幾乎所有可視化。此外,圍繞Matplotlib有一個豐富的Python工具生態環境,很多更高級的可視化工具使用Matplotlib作為基礎庫。如果你想在Python數據科學棧中進行任何操作,你需要對如何使用Matplotlib有一些基礎了解。這就是本文其余部分的重點——提供一種高效使用Matplotlib的基礎方法。
前提
推薦以下步驟學習如何使用Matplotlib:
1.學習Matplotlib的基本術語,具體來說就是什么是Figure和Axes。
2.一直使用面向對象的界面,養成習慣。
3.用基礎的pandas繪圖開始可視化。
4.使用seaborn進行稍微復雜的數據可視化。
5.使用Matplotlib自定義pandas或seaborn可視化。
下圖非常重要,有助于理解圖的不同術語。
大部分術語很直接易懂,需要牢記的是Figure是可能包含一或多個axes的最終圖像。Axes代表單個圖。一旦你理解這些是什么以及如何通過面向對象的API評估它們,其余步驟就很簡單了。
了解這個知識還有一個好處,就是當你在網絡上看東西的時候有一個出發點。如果你花時間了解了這個點,那么其他的MatplotlibAPI才有意義。此外,很多高級Python包,如seaborn和ggplot依賴于Matplotlib構建,因此理解了基礎,學習更強大的框架才更加容易。
最后,我不是說你應該逃避其他優秀選項,如ggplot(又名ggpy)、bokeh、plotly或altair。我只是認為你需要對matplotlib+pandas+seaborn有一個基礎的了解。了解基礎可視化棧之后,你就可以探索其他優秀工具,根據需求做出合適的選擇。
開始
下面主要介紹如何在pandas中創建基礎的可視化以及使用Matplotlib定制最常用的項。了解基礎流程有助于更直觀地進行自定義。
我主要關注最常見的繪圖任務,如標注軸、調整圖形界限(limit)、更新圖標題、保存圖像和調整圖例。
開始,我打算設置輸入,讀取一些數據:
importpandasaspd
importmatplotlib.pyplotasplt
frommatplotlib.tickerimportFuncFormatter
df=pd.read_excel("https://github.com/chris1610/pbpython/blob/master/data/sample-salesv3.xlsx?raw=true")
df.head()
數據包括2014年的銷售交易額。為簡短起見,我將總結這些數據,列出前十名客戶的采購次數和交易額。繪圖時我將對各列進行重命名。
top_10=(df.groupby('name')['extprice','quantity'].agg({'extprice':'sum','quantity':'count'})
.sort_values(by='extprice',ascending=False))[:10].reset_index()
top_10.rename(columns={'name':'Name','extprice':'Sales','quantity':'Purchases'},inplace=True)
下圖是數據。
現在數據在簡單的表格形式呈現,我們再來看一下如何將數據繪制成條形圖。如前所述,Matplotlib具備多種不同風格,可用于渲染圖表。你可以使用plt.style.available查看你的系統可用的風格。
plt.style.available
['seaborn-dark',
'seaborn-dark-palette',
'fivethirtyeight',
'seaborn-whitegrid',
'seaborn-darkgrid',
'seaborn',
'bmh',
'classic',
'seaborn-colorblind',
'seaborn-muted',
'seaborn-white',
'seaborn-talk',
'grayscale',
'dark_background',
'seaborn-deep',
'seaborn-bright',
'ggplot',
'seaborn-paper',
'seaborn-notebook',
'seaborn-poster',
'seaborn-ticks',
'seaborn-pastel']
使用如下簡單風格:
plt.style.use('ggplot')
我鼓勵大家使用不同的風格,找到自己喜歡的。
現在我們有了好看的風格,第一步就是使用標準pandas繪圖函數繪制數據:
top_10.plot(kind='barh',y="Sales",x="Name")
推薦使用pandas繪圖的原因在于它是一種快速便捷地建立可視化原型的方式。
自定義圖表
如果你對該圖表的重要部分都很滿意,那么下一步就是對它執行自定義。一些自定義(如添加標題和標簽)可以使用pandasplot函數輕松搞定。但是,你可能會發現自己需要在某個時刻跳出來。這就是我推薦你養成以下習慣的原因:
fig,ax=plt.subplots()
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
生成的圖表和原始圖表基本一樣,不過我們向plt.subplots()添加了一個額外的調用,并將ax傳輸至繪圖函數。為什么要這么做呢?還記得我說在Matplotlib中獲取軸和圖像非常關鍵嗎?這里所做的就是為了達到該目的。通過ax或fig對象可以執行任何自定義。
我們利用pandas實現快速繪圖,現在利用Matplotlib獲取所有功能。通過使用命名慣例,調整別人的解決方案適應自己的需求變得更加直接簡單了。
假設我們想調整x極限,改變一些軸標簽。現在我們在ax變量中有多個軸,可以進行一些操作:
fig,ax=plt.subplots()
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
ax.set_xlim([-10000,140000])
ax.set_xlabel('TotalRevenue')
ax.set_ylabel('Customer');
這是另一種改變標題和標簽的簡單方式:
fig,ax=plt.subplots()
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
ax.set_xlim([-10000,140000])
ax.set(title='2014Revenue',xlabel='TotalRevenue',ylabel='Customer')
為了進一步展示該方法,我們還可以調整圖像大小。使用plt.subplots()函數可以定義figsize,以英寸為單位。我們還可以使用ax.legend().set_visible(False)移除圖例。
fig,ax=plt.subplots(figsize=(5,6))
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
ax.set_xlim([-10000,140000])
ax.set(title='2014Revenue',xlabel='TotalRevenue')
ax.legend().set_visible(False)
要想修改這個圖像,你可能需要執行很多操作。圖中最礙眼的可能是總收益額的格式。Matplotlib可以使用FuncFormatter解決這一問題。該函數用途多樣,允許用戶定義的函數應用到值,并返回格式美觀的字符串。
以下是貨幣格式化函數,用于處理數十萬美元區間的數值:
defcurrency(x,pos):
'Thetwoargsarethevalueandtickposition'
ifx>=1000000:
return'${:1.1f}M'.format(x*1e-6)
return'${:1.0f}K'.format(x*1e-3)
現在我們有了格式化程序函數,就需要定義它,并將其應用到x軸。完整代碼如下:
fig,ax=plt.subplots()
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
ax.set_xlim([-10000,140000])
ax.set(title='2014Revenue',xlabel='TotalRevenue',ylabel='Customer')
formatter=FuncFormatter(currency)
ax.xaxis.set_major_formatter(formatter)
ax.legend().set_visible(False)
這張圖美觀多了,非常好地展示了自定義問題解決方案的靈活性。最后要說的自定義特征是向圖表添加注釋。你可以使用ax.axvline()畫垂直線,使用ax.text()添加自定義文本。就以上示例,我們可以畫一條表示平均值的線,包括代表3個新客戶的標簽。以下是完整代碼:
#Createthefigureandtheaxes
fig,ax=plt.subplots()
#Plotthedataandgettheaveraged
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax)
avg=top_10['Sales'].mean()
#Setlimitsandlabels
ax.set_xlim([-10000,140000])
ax.set(title='2014Revenue',xlabel='TotalRevenue',ylabel='Customer')
#Addalinefortheaverage
ax.axvline(x=avg,color='b',label='Average',linestyle='--',linewidth=1)
#Annotatethenewcustomers
forcustin[3,5,8]:
ax.text(115000,cust,"NewCustomer")
#Formatthecurrency
formatter=FuncFormatter(currency)
ax.xaxis.set_major_formatter(formatter)
#Hidethelegend
ax.legend().set_visible(False)
這可能不是最壯觀的圖,但它確實展示了使用該方法的力量。
圖表
目前,我們所做的所有改變都是針對單個圖表。我們還能夠在圖像上添加多個表,使用不同的選項保存整個圖像。
如果我們確定要在同一個圖像上放置兩個表,那么我們應該對如何做有一個基礎了解。首先,創建圖像,然后創建軸,再將它們繪制成圖表。使用plt.subplots()可以完成該操作:
fig,(ax0,ax1)=plt.subplots(nrows=1,ncols=2,sharey=True,figsize=(7,4))
在這個例子中,我使用nrows和ncols指定大小,這對新用戶來說比較清晰易懂。
在示例代碼中,你會經常看到變量如1、2。我認為使用命名參數便于稍后查看代碼時理解代碼。
我還使用sharey=True以使y軸共享相同的標簽。
該示例很靈活,因為不同的軸可以解壓成ax0和ax1。現在我們有了這些軸,就可以像上述示例中那樣繪圖,然后把一個圖放在ax0上,另一個圖放在ax1。
#Getthefigureandtheaxes
fig,(ax0,ax1)=plt.subplots(nrows=1,ncols=2,sharey=True,figsize=(7,4))
top_10.plot(kind='barh',y="Sales",x="Name",ax=ax0)
ax0.set_xlim([-10000,140000])
ax0.set(title='Revenue',xlabel='TotalRevenue',ylabel='Customers')
#Plottheaverageasaverticalline
avg=top_10['Sales'].mean()
ax0.axvline(x=avg,color='b',label='Average',linestyle='--',linewidth=1)
#Repeatfortheunitplot
top_10.plot(kind='barh',y="Purchases",x="Name",ax=ax1)
avg=top_10['Purchases'].mean()
ax1.set(title='Units',xlabel='TotalUnits',ylabel='')
ax1.axvline(x=avg,color='b',label='Average',linestyle='--',linewidth=1)
#Titlethefigure
fig.suptitle('2014SalesAnalysis',fontsize=14,fontweight='bold');
#Hidethelegends
ax1.legend().set_visible(False)
ax0.legend().set_visible(False)
現在,我已經在jupyternotebook中用%matplotlibinline展示了很多圖像。但是,在很多情況下你需要以特定格式保存圖像,將其和其他呈現方式整合在一起。
Matplotlib支持多種不同文件保存格式。你可以使用fig.canvas.get_supported_filetypes()查看系統支持的文件格式:
fig.canvas.get_supported_filetypes()
{'eps':'EncapsulatedPostscript',
'jpeg':'JointPhotographicExpertsGroup',
'jpg':'JointPhotographicExpertsGroup',
'pdf':'PortableDocumentFormat',
'pgf':'PGFcodeforLaTeX',
'png':'PortableNetworkGraphics',
'ps':'Postscript',
'raw':'RawRGBAbitmap',
'rgba':'RawRGBAbitmap',
'svg':'ScalableVectorGraphics',
'svgz':'ScalableVectorGraphics',
'tif':'TaggedImageFileFormat',
'tiff':'TaggedImageFileFormat'}
我們有fig對象,因此我們可以將圖像保存成多種格式:
fig.savefig('sales.png',transparent=False,dpi=80,bbox_inches="tight")
該版本將圖表保存為不透明背景的png文件。我還指定dpi和bbox_inches="tight"以最小化多余空白。
結論
希望該方法可以幫助大家理解如何更有效地使用Matplotlib進行日常數據分析。
m文件如何轉換pdf
要將MATLAB的M文件轉換為PDF文件,你可以按照以下步驟進行:
1.打開MATLAB軟件,并確保你的M文件已在編輯器中打開。
2.在編輯器中,選擇"文件(File)"菜單,然后選擇"導出(Export)"或相似選項。
3.在導出選項中,選擇"導出為PDF(ExportasPDF)"或類似選項。
4.彈出一個保存文件對話框,你可以選擇保存PDF文件的路徑和文件名。
5.在對話框中,確認所選的保存位置和文件名后,點擊"保存(Save)"按鈕。
6.MATLAB將使用所選的文件路徑和文件名將M文件導出為PDF格式。
請注意,導出的PDF文件將包含M文件的代碼和格式。如果M文件中存在圖形、結果或其他內容,它們將被包含在生成的PDF文件中。
這是使用MATLAB軟件內置功能將M文件轉換為PDF文件的簡單步驟。
如果你使用其他文本編輯器或轉換工具,請參考相關軟件的文檔或幫助文件以了解如何執行相應的轉換操作。
用matlab怎么求正態分布概率
您好,可以使用matlab中的normpdf函數和normcdf函數來求解正態分布概率。
normpdf函數用于計算正態分布的概率密度函數值,其語法為:
y=normpdf(x,mu,sigma)
其中,x是自變量,表示要求解的概率密度函數值的位置;mu是均值,sigma是標準差。y為求得的概率密度函數值。
例如,要求解正態分布N(0,1)在x=1處的概率密度函數值,可以使用以下代碼:
>>y=normpdf(1,0,1)
y=0.24197
normcdf函數用于計算正態分布的累積分布函數值,即概率值,其語法為:
y=normcdf(x,mu,sigma)
其中,x是自變量,表示要求解的概率值的位置;mu是均值,sigma是標準差。y為求得的概率值。
例如,要求解正態分布N(0,1)在x=1處的概率值,可以使用以下代碼:
>>y=normcdf(1,0,1)
y=0.84134
以上兩個函數可以幫助我們求解正態分布的概率密度和概率值。
matlab代碼怎么分享
在MATLAB中,你可以將你的代碼分享給其他人,有幾種常見的方式:1.復制和粘貼:將你的代碼復制到文本編輯器中,然后將其粘貼到你想要分享的地方(比如電子郵件、論壇或社交媒體平臺)。2.創建MATLAB腳本(.m文件):在MATLAB編輯器中創建一個新的腳本文件,將你的代碼復制粘貼到這個文件中。然后將該腳本文件發送給其他人,他們就可以在他們的MATLAB環境中運行這段代碼。3.導出成MATLAB函數:如果你的代碼是封裝在一個函數中的,你可以將這個函數保存為.m文件,然后將其發送給其他人。收到這個函數文件的人可以在自己的MATLAB環境中使用該函數。4.使用發布工具:MATLAB提供了一個發布工具,它可以將你的代碼以各種格式(如HTML、PDF、Word文檔等)發布出來。這樣,其他人可以在不使用MATLAB的情況下查看和運行你的代碼。不過,在分享代碼之前,你需要確保你已經給出了足夠的上下文和說明,以便其他人能夠理解你的代碼的用途和使用方式。
batchplot怎么轉pdf
可以通過以下步驟將batchplot轉成pdf格式:
1.打開batchplot繪圖所在的軟件(例如MATLAB)
2.在文件菜單中選擇“導出”,然后選擇“導出為PDF…”
3.在彈出的窗口中,選擇要保存PDF文件的位置和文件名4.點擊“保存”,即可將batchplot轉換成PDF格式保存下來以上是將batchplot轉成PDF的基本步驟,需要注意的是,在導出PDF時,有些繪圖軟件可能有一些特殊設置,需要根據軟件的具體操作流程進行設置。
文章分享結束,matlab入門教程pdf下載和matlab教程pdf百度網盤的答案你都知道了嗎?歡迎再次光臨本站哦!