『壹』 python如何運用matplotlib庫繪制3D圖形
3D圖形在數據分析、數據建模、圖形和圖像處理等領域中都有著廣泛的應用,下面將給大家介紹一下如何在Python中使用 matplotlib進行3D圖形的繪制,包括3D散點、3D表面、3D輪廓、3D直線(曲線)以及3D文字等的繪制。
准備工作:
python中繪制3D圖形,依舊使用常用的繪圖模塊matplotlib,但需要安裝mpl_toolkits工具包,安裝方法如下:windows命令行進入到python安裝目錄下的Scripts文件夾下,執行: pip install --upgrade matplotlib即可;Linux環境下直接執行該命令。
安裝好這個模塊後,即可調用mpl_tookits下的mplot3d類進行3D圖形的繪制。
下面以實例進行說明。
1、3D表面形狀的繪制
這段代碼是繪制一個3D的橢球表面,結果如下:
2、3D直線(曲線)的繪制
這段代碼用於繪制一個螺旋狀3D曲線,結果如下:
3、繪制3D輪廓
繪制結果如下:
相關推薦:《Python視頻教程》
4、繪制3D直方圖
繪制結果如下:
5、繪制3D網狀線
繪制結果如下:
6、繪制3D三角面片圖
繪制結果如下:
7、繪制3D散點圖
繪制結果如下:
『貳』 python繪制散點圖|散點大小和顏色深淺由數值決定
Python,以其在數據處理、機器學習和可視化中的廣泛應用,成為了眾多開發者喜愛的工具。Matplotlib,作為Python中最受推崇的數據可視化庫之一,本文將深入指導如何通過Python和Matplotlib創建散點圖,從數據生成到圖形細節的調整一應俱全。
首先,請確保已安裝所需庫,如需安裝,可通過命令行進行操作。接下來,我們生成數據,通過numpy庫的random模塊生成代表語文、數學和英語成績的三組隨機整數,每個學生分數在相應范圍內,如語文分數50-100(不包括100)等。
然後,利用Matplotlib的scatter()函數繪制散點圖,以展示各科成績間的關聯。例如,我們將分別繪制語文分數與數學分數、語文與英語以及數學與英語的散點圖,通過`s`參數調整散點大小,`alpha`參數控制透明度,並為每組數據添加標簽。
為了使圖表更加易讀,我們還將在圖形中精細調整坐標軸。可以使用set_xlim()和set_ylim()函數設定軸范圍,set_xticks()和set_yticks()設置刻度間隔,set_xlabel()和set_ylabel()則用於添加清晰的軸標簽,如「語文分數」和「數學分數/英語分數」,並指定Times New Roman字體。
完整的代碼涵蓋了數據生成、散點圖繪制,以及對視覺效果的優化,包括軸范圍、刻度和標簽樣式等。通過執行這些步驟,您將獲得一個直觀且專業的散點圖。
以上就是關於如何利用Python和Matplotlib繪制散點圖的詳細教程,如果您想了解更多,請參考原文鏈接:[項目申報小狂人的博客-CSDN](https://www.csdn.net/article/details/xxxxx)。
『叄』 Python 數據可視化:分類特徵統計圖
上一課已經體驗到了 Seaborn 相對 Matplotlib 的優勢,本課將要介紹的是 Seaborn 對分類數據的統計,也是它的長項。
針對分類數據的統計圖,可以使用 sns.catplot 繪制,其完整參數如下:
本課使用演繹的方式來學習,首先理解這個函數的基本使用方法,重點是常用參數的含義。
其他的參數,根據名稱也能基本理解。
下面就依據 kind 參數的不同取值,分門別類地介紹各種不同類型的分類統計圖。
讀入數據集:
然後用這個數據集制圖,看看效果:
輸出結果:
毫無疑問,這里繪制的是散點圖。但是,該散點圖的橫坐標是分類特徵 time 中的三個值,並且用 hue='kind' 又將分類特徵插入到圖像中,即用不同顏色的的點代表又一個分類特徵 kind 的值,最終得到這些類別組合下每個記錄中的 pulse 特徵值,並以上述圖示表示出來。也可以理解為,x='time', hue='kind' 引入了圖中的兩個特徵維度。
語句 ① 中,就沒有特別聲明參數 kind 的值,此時是使用默認值 'strip'。
與 ① 等效的還有另外一個對應函數 sns.stripplot。
輸出結果:
② 與 ① 的效果一樣。
不過,在 sns.catplot 中的兩個參數 row、col,在類似 sns.stripplot 這樣的專有函數中是沒有的。因此,下面的圖,只有用 sns.catplot 才能簡潔直觀。
輸出結果:
不過,如果換一個叫角度來說,類似 sns.stripplot 這樣的專有函數,表達簡單,參數與 sns.catplot 相比,有所精簡,使用起來更方便。
仔細比較,sns.catplot 和 sns.stripplot 兩者還是稍有區別的,雖然在一般情況下兩者是通用的。
因此,不要追求某一個是萬能的,各有各的用途,存在即合理。
不過,下面的聲明請注意: 如果沒有非常的必要,比如繪制分區圖,在本課中後續都演示如何使用專有名稱的函數。
前面已經初步解釋了這個函數,為了格式完整,這里再重復一下,即 sns.catplot 中參數 kind='strip'。
如果非要將此函數翻譯為漢語,可以稱之為「條狀散點圖」。以分類特徵為一坐標軸,在另外一個坐標軸上,根據分類特徵,將該分類特徵數據所在記錄中的連續值沿坐標軸描點。
從語句 ② 的結果圖中可以看到,這些點雖然縱軸的數值有相同的,但是沒有將它們重疊。因此,我們看到的好像是「一束」散點,實際上,所有點的橫坐標都應該是相應特徵分類數據,也不要把分類特徵的值理解為一個范圍,分散開僅僅是為了圖示的視覺需要。
輸出結果:
④ 相對 ② 的圖示,在於此時同一縱軸值的都重合了——本來它們的橫軸值都是一樣的。實現此效果的參數是 jitter=0,它可以表示點的「振動」,如果默認或者 jitter=True,意味著允許描點在某個范圍振動——語句 ② 的效果;還可設置為某個 0 到 1 的浮點,表示許可振動的幅度。請對比下面的操作。
輸出結果:
語句 ② 中使用 hue='kind' 參數向圖中提供了另外一個分類特徵,但是,如果感覺圖有點亂,還可以這樣做:
輸出結果:
dodge=True 的作用就在於將 hue='kind' 所引入的特徵數據分開,相對 ② 的效果有很大差異。
並且,在 ⑤ 中還使用了 paletter='Set2' 設置了色彩方案。
sns.stripplot 函數中的其他有關參數,請讀者使用幫助文檔了解。
此函數即 sns.catplot 的參數 kind='swarm'。
輸出結果:
再繪制一張簡單的圖,一遍研究這種圖示的本質。
輸出結果:
此圖只使用了一個特徵的數據,簡化表象,才能探究 sns.swarmplot 的本質。它同樣是將該特徵中的數據,依據其他特徵的連續值在圖中描點,並且所有點在默認情況下不彼此重疊——這方面與 sns.stripplot 一樣。但是,與之不同的是,這些點不是隨機分布的,它們經過調整之後,均勻對稱分布在分類特徵數值所在直線的兩側,這樣能很好地表示數據的分布特點。但是,這種方式不適合「大數據」。
sns.swarmplot 的參數似乎也沒有什麼太特殊的。下面使用幾個,熟悉一番基本操作。
在分類維度上還可以再引入一個維度,用不同顏色的點表示另外一種類別,即使用 hue 參數來實現。
輸出結果:
這里用 hue = 'smoker' 參數又引入了一個分類特徵,在圖中用不同顏色來區分。
如果覺得會 smoker 特徵的值都混在一起有點亂,還可以使用下面方式把他們分開——老調重彈。
輸出結果:
生成此效果的參數就是 dodge=True,它的作用就是當 hue 參數設置了特徵之後,將 hue 的特徵數據進行分類。
sns.catplot 函數的參數 kind 可以有三個值,都是用於繪制分類的分布圖:
下面依次對這三個專有函數進行闡述。
『肆』 Python實現彩色散點圖繪制(利用色帶對散點圖進行顏色渲染)
接受自己的普通,然後全力以赴的出眾,告訴自己要努力,但不要著急....
當然, 這個結果並不是我真正想要的,Pass, 太丑了!
好吧,安排,我們先看下實現後的效果!
這個效果自然就比之前的好多了!
實現python散點圖繪制需要用到matplotlib庫, matplotlib庫是專門用於可視化繪圖的工具庫;學習一個新的庫當然看官方文檔了: https://www.osgeo.cn/matplotlib/contents.html
實現思路:
matplotlib.pyplot.scatter() 函數是專門繪制散點圖的函數: https://www.osgeo.cn/matplotlib/api/_as_gen/matplotlib.pyplot.scatter.html?highlight=scatter#matplotlib.pyplot.scatter
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參數為計算的散點密度;
2、cmap為色帶(matplotlib裡面自帶了很多色帶可供選擇),參見:
https://www.osgeo.cn/matplotlib/gallery/color/colormap_reference.html
3、由於計算的散點密度數值大小分散,因此利用norm參數對散點密度Z1進行歸一化處理(歸一化方式很多,參見colors類),並給歸一化方式設置色帶刻度的最大最小值vmin和vmax(一般這兩個參數就是指定散點密度的最小值和最大值),這樣就建立起了密度與色帶的映射關系。
https://matplotlib.org/tutorials/colors/colormapnorms.html
(這里的結果與前面展示的相比改變了計算散點密度的半徑:radius = 3以及繪制散點圖的散點大小marksize)
作者能力水平有限,歡迎各位批評指正!
『伍』 Python之神奇的繪圖庫matplotlib
matplotlib是Python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合互動式地進行制圖。本文將以例子的形式分析matplot中支持的,分析中常用的幾種圖。其中包括填充圖、散點圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點陣圖和3D圖,下面來一起看看詳細的介紹:
一、填充圖
參考代碼
簡要分析
這里主要是用到了fill_between函數。這個函數很好理解,就是傳入x軸的數組和需要填充的兩個y軸數組;然後傳入填充的范圍,用where=來確定填充的區域;最後可以加上填充顏色啦,透明度之類修飾的參數。
相關推薦:《Python教程》
效果圖
二、散點圖(scatter plots)
參考代碼
簡要分析
1.首先介紹一下numpy 的normal函數,很明顯,這是生成正態分布的函數。這個函數接受三個參數,分別表示正態分布的平均值,標准差,還有就是生成數組的長度。很好記。
2.然後是arctan2函數,這個函數接受兩個參數,分別表示y數組和x數組,然後返回對應的arctan(y/x)的值,結果是弧度制。
3.接下來用到了繪制散點圖的scatter方法,首先當然是傳入x和y數組,接著s參數表示scale,即散點的大小;c參數表示color,我給他傳的是根據角度劃分的一個數組,對應的就是每一個點的顏色(雖然不知道是怎麼對應的,不過好像是一個根據數組內其他元素進行的相對的轉換,這里不重要了,反正相同的顏色賦一樣的值就好了);最後是alpha參數,表示點的透明度。scatter函數的高級用法可以參見官方文檔scatter函數或者help文檔,最後設置下坐標范圍就好了。
效果圖
三、等高線圖(contour plots)
參考代碼
簡要分析
1.首先要明確等高線圖是一個三維立體圖,所以我們要建立一個二元函數f,值由兩個參數控制,(注意,這兩個參數都應該是矩陣)。
2.然後我們需要用numpy的meshgrid函數生成一個三維網格,即,x軸由第一個參數指定,y軸由第二個參數指定。並返回兩個增維後的矩陣,今後就用這兩個矩陣來生成圖像。
3.接著就用到coutourf函數了,所謂contourf,大概就是contour fill的意思吧,只填充,不描邊;這個函數主要是接受三個參數,分別是之前生成的x、y矩陣和函數值;接著是一個整數,大概就是表示等高線的密度了,有默認值;然後就是透明度和配色問題了,cmap的配色方案這里不多研究。
4.隨後就是contour函數了,很明顯,這個函數是用來描線的。用法可以類似的推出來,不解釋了,需要注意的是他返回一個對象,這個對象一般要保留下來個供後續的加工細化。
5.最後就是用clabel函數來在等高線圖上表示高度了,傳入之前的那個contour對象;然後是inline屬性,這個表示是否清除數字下面的那條線,為了美觀當然是清除了,而且默認的也是1;再就是指定線的寬度了。
效果圖