国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python干貨:分享Python繪制六種可視化圖表

2020-01-04 14:38:18
字體:
來源:轉載
供稿:網友

可視化圖表,有相當多種,但常見的也就下面幾種,其他比較復雜一點,大都也是基于如下幾種進行組合,變換出來的。對于初學者來說,很容易被這官網上眾多的圖表類型給嚇著了,由于種類太多,幾種圖表的繪制方法很有可能會混淆起來。

因此,在這里,我特地總結了六種常見的基本圖表類型,你可以通過對比學習,打下堅實的基礎。

01. 折線圖

繪制折線圖,如果你數據不是很多的話,畫出來的圖將是曲折狀態,但一旦你的數據集大起來,比如下面我們的示例,有100個點,所以我們用肉眼看到的將是一條平滑的曲線。

這里我繪制三條線,只要執行三次 plt.plot 就可以了。

import numpy as npimport matplotlib.pyplot as pltx= np.linspace(0, 2, 100)plt.plot(x, x, label='linear')plt.plot(x, x**2, label='quadratic')plt.plot(x, x**3, label='cubic')plt.xlabel('x label')plt.ylabel('y label')plt.title("Simple Plot")plt.legend()plt.show()

Python,繪制,可視化圖表

02. 散點圖

其實散點圖和折線圖是一樣的原理,將散點圖里的點用線連接起來就是折線圖了。所以繪制散點圖,只要設置一下線型即可。

注意:這里我也繪制三條線,和上面不同的是,我只用一個 plt.plot 就可以了。

import numpy as npimport matplotlib.pyplot as pltx = np.arange(0., 5., 0.2)# 紅色破折號, 藍色方塊 ,綠色三角塊plt.plot(x, x, 'r--', x, x**2, 'bs', x, x**3, 'g^')plt.show()

Python,繪制,可視化圖表

03. 直方圖

直方圖,大家也不算陌生了。這里小明加大難度,在一張圖里,畫出兩個頻度直方圖。這應該在實際場景上也會遇到吧,因為這樣真的很方便比較,有木有?

import numpy as npimport matplotlib.pyplot as pltnp.random.seed(19680801)mu1, sigma1 = 100, 15mu2, sigma2 = 80, 15x1 = mu1 + sigma1 * np.random.randn(10000)x2 = mu2 + sigma2 * np.random.randn(10000)# the histogram of the data# 50:將數據分成50組# facecolor:顏色;alpha:透明度# density:是密度而不是具體數值n1, bins1, patches1 = plt.hist(x1, 50, density=True, facecolor='g', alpha=1)n2, bins2, patches2 = plt.hist(x2, 50, density=True, facecolor='r', alpha=0.2)# n:概率值;bins:具體數值;patches:直方圖對象。plt.xlabel('Smarts')plt.ylabel('Probability')plt.title('Histogram of IQ')plt.text(110, .025, r'$/mu=100,/ /sigma=15$')plt.text(50, .025, r'$/mu=80,/ /sigma=15$')# 設置x,y軸的具體范圍plt.axis([40, 160, 0, 0.03])plt.grid(True)plt.show()

Python,繪制,可視化圖表

04. 柱狀圖

同樣的,簡單的柱狀圖,我就不畫了,這里畫三種比較難的圖。

4.1 并列柱狀圖

import numpy as npimport matplotlib.pyplot as pltsize = 5a = np.random.random(size)b = np.random.random(size)c = np.random.random(size)x = np.arange(size)# 有多少個類型,只需更改n即可total_width, n = 0.8, 3  width = total_width / n# 重新擬定x的坐標x = x - (total_width - width) / 2# 這里使用的是偏移plt.bar(x, a, width=width, label='a')plt.bar(x + width, b, width=width, label='b')plt.bar(x + 2 * width, c, width=width, label='c')plt.legend()plt.show()

Python,繪制,可視化圖表

4.2 疊加柱狀圖

import numpy as npimport matplotlib.pyplot as pltsize = 5a = np.random.random(size)b = np.random.random(size)c = np.random.random(size)x = np.arange(size)# 這里使用的是偏移plt.bar(x, a, width=0.5, label='a',fc='r')plt.bar(x, b, bottom=a, width=0.5, label='b', fc='g')plt.bar(x, c, bottom=a+b, width=0.5, label='c', fc='b')plt.ylim(0, 2.5)plt.legend()plt.grid(True)plt.show()

Python,繪制,可視化圖表

05. 餅圖

5.1 普通餅圖

import matplotlib.pyplot as pltlabels = 'Frogs', 'Hogs', 'Dogs', 'Logs'sizes = [15, 30, 45, 10]# 設置分離的距離,0表示不分離explode = (0, 0.1, 0, 0) plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',  shadow=True, startangle=90)# Equal aspect ratio 保證畫出的圖是正圓形plt.axis('equal') plt.show()

Python,繪制,可視化圖表

5.2 嵌套餅圖

import numpy as npimport matplotlib.pyplot as plt# 設置每環的寬度size = 0.3vals = np.array([[60., 32.], [37., 40.], [29., 10.]])# 通過get_cmap隨機獲取顏色cmap = plt.get_cmap("tab20c")outer_colors = cmap(np.arange(3)*4)inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10]))print(vals.sum(axis=1))# [92. 77. 39.]plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors,  wedgeprops=dict(width=size, edgecolor='w'))print(vals.flatten())# [60. 32. 37. 40. 29. 10.]plt.pie(vals.flatten(), radius=1-size, colors=inner_colors,  wedgeprops=dict(width=size, edgecolor='w'))# equal 使得為正圓plt.axis('equal') plt.show()

Python,繪制,可視化圖表

5.3 極軸餅圖

要說酷炫,極軸餅圖也是數一數二的了,這里肯定也要學一下。

import numpy as npimport matplotlib.pyplot as pltnp.random.seed(19680801)N = 10theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)radii = 10 * np.random.rand(N)width = np.pi / 4 * np.random.rand(N)ax = plt.subplot(111, projection='polar')bars = ax.bar(theta, radii, width=width, bottom=0.0)# left表示從哪開始,# radii表示從中心點向邊緣繪制的長度(半徑)# width表示末端的弧長# 自定義顏色和不透明度for r, bar in zip(radii, bars): bar.set_facecolor(plt.cm.viridis(r / 10.)) bar.set_alpha(0.5)plt.show()

Python,繪制,可視化圖表

06. 三維圖

6.1 繪制三維散點圖

import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Ddata = np.random.randint(0, 255, size=[40, 40, 40])x, y, z = data[0], data[1], data[2]ax = plt.subplot(111, projection='3d') # 創建一個三維的繪圖工程# 將數據點分成三部分畫,在顏色上有區分度ax.scatter(x[:10], y[:10], z[:10], c='y') # 繪制數據點ax.scatter(x[10:20], y[10:20], z[10:20], c='r')ax.scatter(x[30:40], y[30:40], z[30:40], c='g')ax.set_zlabel('Z') # 坐標軸ax.set_ylabel('Y')ax.set_xlabel('X')plt.show()

Python,繪制,可視化圖表

6.2 繪制三維平面圖

from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()ax = Axes3D(fig)X = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = np.sin(R)# 具體函數方法可用 help(function) 查看,如:help(ax.plot_surface)ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')plt.show()

Python,繪制,可視化圖表

總結

以上所述是小編給大家介紹的Python繪制六種可視化圖表,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴堡县| 尉氏县| 贵港市| 嘉荫县| 巴林右旗| 兰坪| 苍溪县| 岢岚县| 弥渡县| 耿马| 北辰区| 准格尔旗| 迁安市| 芒康县| 恭城| 宝鸡市| 沈丘县| 克什克腾旗| 历史| 汶上县| 富顺县| 南部县| 德钦县| 靖州| 平舆县| 万年县| 绵竹市| 成武县| 都昌县| 河津市| 伊金霍洛旗| 沁源县| 石楼县| 星座| 崇阳县| 仙居县| 乡城县| 盐源县| 垫江县| 会宁县| 繁峙县|