柱狀圖、直方圖、散點圖、餅圖講解
柱狀圖、直方圖、散點圖、餅圖講解
1、柱狀圖 柱狀圖適用場合是二維資料集(每個資料點包括兩個值x和y),但只有一個維度需要比較。 例如:年銷售額就是二維資料,”年份”和”銷售額”就是它的兩個維度,但只需要比較”銷售額”這一個維度 特點:柱狀圖利用柱子的高度來反應資料的差異,肉眼對於高度的差異很敏感,辨識效果非常好! 柱狀圖的使用方法: 前面的折線圖使用的是plot函式,但是柱狀圖使用的是bar函式 語法: plt.bar(x,height,width,color) 其中的引數說明: x:記錄x軸上的標籤 height:記錄每個柱形的高度 width:設定柱形的寬度 color:設定柱形的顏色,傳入顏色值的列表,例如:['blue','green','red'] 示例: %matplotlib inline from matplotlib import pyplot as plt from matplotlib import font_manager a = ['流浪地球','瘋狂的外星人','飛馳人生','大黃蜂','熊出沒·原始時代','新喜劇之王'] b = [38.13,19.85,14.89,11.36,6.47,5.93] my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF') plt.figure(figsize=(20,8),dpi=80) # 繪製柱狀圖 rects = plt.bar(a,b,width=0.3,color=['red','green','blue','cyan','yellow','gray']) plt.xticks(a,fontproperties=my_font) plt.yticks(range(0,41,5),range(0,41,5)) # 在條形圖上加標註(水平居中) for rect in rects: height = rect.get_height() plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center") plt.show() 細心的同學會注意到,我們將柱形的高度資料標註在了柱形的上方。沒錯,我們使用了plt.text( ) 函式為每個柱形標註高度數值 plt.text(x,y,s,ha,va) 函式中前兩個引數分別是資料中的座標,X座標以及Y座標,引數s記錄標註的內容。引數ha和va分別 用於設定水平和垂直方向的對齊方式 rects是plt.bar()函式的返回值,裡面包含了每一個柱形為每一個柱形新增數值需要逐個新增,所以 我們設定一個迴圈來操作 通過get_height()、get_x()、rect.get_width()等方法可以分別拿到柱形圖的高度,左側邊的x值, 柱子的寬度。然後,使用plt.text新增上文字,這樣就可以清晰地看出每個柱形的高度了。 2、直方圖 直方圖一般用來描述等距資料,柱狀圖一般用來描述名稱(類別)資料或順序資料。直觀上,直方圖各個長條 形是銜接在一起的,表示資料間的數學關係;條形圖各長條形之間留有空隙,區分不同的類 繪製直方圖使用plt.hist()函式: plt.hist(data, bins, facecolor, edgecolor) 常用引數: data:繪圖用到的資料 bins:控制直方圖中的區間個數 facecolor:矩形的填充顏色 edgecolor:條形的邊框顏色 柱形圖和直方圖的區別: 第一,柱形圖中用柱形的高度表示各類別的數值,橫軸表示類別,寬度是固定的;而直方圖是用矩形的高度 表示每一組的頻數或頻率,寬度則表示各組的組距,因此其高度與寬度均有意義。 第二,直方圖主要用於展示連續型數值型資料,所以各矩形通常是連續排列的;而柱形圖主要用於展示分型別 資料,常常是分開排列的。 示例: %matplotlib inline from matplotlib import pyplot as plt from matplotlib import font_manager time = [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] my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF',size=10) # 2)建立畫布 plt.figure(figsize=(20, 8), dpi=100) # 3)繪製直方圖 # 設定組距 distance = 2 # 計算組數 group_num = int((max(time) - min(time)) / distance) # 繪製直方圖 plt.hist(time, bins=group_num) # 修改x軸刻度顯示 plt.xticks(range(min(time), max(time))[::2]) # 新增網格顯示 plt.grid(linestyle="--", alpha=0.5) # 新增x, y軸描述資訊 plt.xlabel("電影時長大小",fontproperties=my_font) plt.ylabel("電影的資料量",fontproperties=my_font) # 4)顯示影像 3、散點圖 散點圖是判斷變數之間是否存在數量關聯趨勢,展示離群點。每個點的座標位置由變數的值決定,並由一組不連線 的點完成,用於觀察兩種變數的相關性。例如,身高—體重、溫度—維度 繪製直方圖使用plt.scatter()函式: plt.scatter(x,y,s,c,marker,alpha,linewidths) 常用引數 x,y:陣列 s:散點圖中點的大小,可選 c:散點圖中點的顏色,可選 marker:散點圖的形狀,可選 alpha:表示透明度,在 0~1 取值,可選 linewidths:表示線條粗細,可選 示例: %matplotlib inline import pandas as pd from matplotlib import pyplot as plt df = pd.read_csv('/data/course_data/data_analysis/height_weight.csv') # 設定圖形大小 plt.figure(figsize=(20,8),dpi=80) # 使用scatter繪製散點圖 plt.scatter(df['height'],df['weight'],alpha=0.5,c='red') plt.show() 4、餅圖 餅圖是展示 分類資料的佔比情況,就是反映某個部分佔整體的比重 餅圖的整個圓代表總資料,各個扇形表示每項資料,我們可以根據扇形的角度清楚地看出每個扇形佔總資料的比例 繪製餅圖我們使用plt.pie( )函式。 plt.pie(x, labels, autopct, shadow, startangle) 常用引數 x:繪製用到的資料 Tlabels:用於設定餅圖中每一個扇形外側的顯示說明文字 autopct:設定餅圖內百分比資料,可以使用format字串或者format function,例如’%.1f%%’指 小數點後保留1位小數 shadow:表示是否在餅圖下面畫陰影,預設值:False,即不畫陰影 Tstartangle:設定起始繪製角度,預設圖是從x軸正方向逆時針畫起,如果設定startangle=90, 則從y軸正方向畫起 示例: %matplotlib inline import pandas as pd from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname='/data/course_data/data_analysis/STSONG.TTF',size=10) df = pd.read_excel('/data/course_data/data_analysis/lagou.xlsx') plt.figure(figsize = (10,8)) num = df.groupby('學歷').size() # 繪製餅圖 patches, l_text, p_text = plt.pie(num,labels = num.index, autopct='%.1f%%',shadow=False,startangle=90) for t in l_text: t.set_fontproperties(my_font) plt.show() 程式碼解析: df.groupby('學歷').size()按照型別變數學歷對原資料分組,使用groupby函式,然後計算每組資料的 資料量,使用size()函式,將輸出的資料記錄為num。 plt.pie()會有三個返回值 patches: matplotlib.patches.Wedge列表(扇形例項) l_text:label matplotlib.text.Text列表(標籤例項) p_text:label matplotlib.text.Text列表(百分比標籤例項) 所以,在每一個扇形外側顯示中文的時候,需要獲取到每一個標籤例項,然後通過set_fontproperties() 方法設定自定義字型。 df.groupby('學歷').size()按照型別變數學歷對原資料分組,使用groupby函式,然後計算每組資料的資料 量,使用size()函式,將輸出的資料記錄為num。 plt.pie()會有三個返回值: patches: matplotlib.patches.Wedge列表(扇形例項) l_text:label matplotlib.text.Text列表(標籤例項) p_text:label matplotlib.text.Text列表(百分比標籤例項) 所以,在每一個扇形外側顯示中文的時候,需要獲取到每一個標籤例項,然後通過set_fontproperties() 方法設定自定義字型。
相關文章
- python-資料分析-Matplotlib-1-基礎圖形(曲線圖-散點-柱狀-堆疊柱狀-餅狀圖-直方圖)Python直方圖
- Quart2D 畫圖二 (餅狀圖、柱狀圖)
- 用GraphPad Prism9做分組柱狀圖與散點圖共存圖PHP
- 用matplotlib散點圖用餅圖示記
- echarts 餅圖巢狀 二級餅圖 子餅圖 複合餅圖Echarts巢狀
- ECharts系列:玩轉ECharts之常用圖(折線、柱狀、餅狀、散點、關係、樹)Echarts
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- 柱狀圖
- Flutter 112: 圖解自定義 ACEPieWidget 餅狀圖Flutter圖解
- 九、柱狀圖和3D柱狀圖3D
- 用Python生成柱狀圖、折線圖、餅狀圖來統計自己的手機話費Python
- Echarts 柱狀圖配置詳解Echarts
- 資料視覺化:圖表篇(1)—— 基本柱狀圖、堆疊柱狀圖視覺化
- PyQtGraph之柱狀圖QT
- oracle 柱狀圖(Histograms)OracleHistogram
- 使用 Flutter 繪製圖表(二)餅狀圖?Flutter
- SVG繪製餅狀圖SVG
- R繪圖(06)——帶errorbar的柱狀圖繪圖ErrorORB
- 使用 Flutter 繪製圖表(一)柱狀圖?Flutter
- 直方圖均衡化直方圖
- 直方圖學習直方圖
- 【matplotlib 實戰】--柱狀圖
- Echarts立體柱狀圖Echarts
- JavaScript介面畫柱狀圖JavaScript
- echarts 柱狀圖 詳解與使用集合Echarts
- 餅圖
- amCharts繪製折線圖和柱狀圖混合
- MPAndroidChart繪製曲線圖、柱狀圖總結Android
- Canvas(3)---繪製餅狀圖Canvas
- R語言基於表格檔案的資料繪製具有多個系列的柱狀圖與直方圖R語言直方圖
- 垂直柱狀圖(模擬+字串)字串
- python如何畫直方圖Python直方圖
- halcon-直方圖均衡直方圖
- 直方圖中最大矩形直方圖
- Py-plt: Matplotlib常用柱狀圖詳解
- [Python影象處理] 十一.灰度直方圖概念及OpenCV繪製直方圖Python直方圖OpenCV
- D3.js上手——餅狀圖JS
- Python視覺化-散點圖與彩色散點圖Python視覺化