日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python实现数据可视化】创建3D柱状图

發(fā)布時(shí)間:2024/4/18 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python实现数据可视化】创建3D柱状图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

雖然matplotlib主要專注于繪圖,并且主要是二維的圖形,但是它也有一些不同的擴(kuò)展,能讓我們在地理圖上繪圖,讓我們把Excel和3D圖表結(jié)合起來。在matplotlib的世界里,這些擴(kuò)展叫做工具包(toolkits)。工具包是一些關(guān)注在某個(gè)話題(如3D繪圖)的特定函數(shù)的集合。

比較流行的工具包有Basemap、GTK 工具、Excel工具、Natgrid、AxesGrid和mplot3d。

本節(jié)將探索關(guān)于mplot3d的更多功能。mpl_toolkits.mplot3工具包提供了一些基本的3D繪圖功能,其支持的圖表類型包括散點(diǎn)圖(scatter)、曲面圖(surf)、線圖(line)和網(wǎng)格圖(mesh)。雖然mplot3d不是一個(gè)最好的3D圖形繪制庫,但是它是伴隨著matplotlib產(chǎn)生的,因此我們對其接口已經(jīng)很熟悉了。

準(zhǔn)備工作

基本來講,我們?nèi)匀恍枰獎?chuàng)建一個(gè)圖表并把想要的坐標(biāo)軸添加到上面。但不同的是我們?yōu)閳D表指定的是3D視圖,并且添加的坐標(biāo)軸是Axes3D

現(xiàn)在,我們可以使用幾乎相同的函數(shù)來繪圖了。當(dāng)然,函數(shù)的參數(shù)是不同的,需要為3個(gè)坐標(biāo)軸提供數(shù)據(jù)。

例如,我們要為函數(shù)mpl_toolkits.mplot3d.Axes3D.plot指定xs、ys、zs和zdir參數(shù)。其他的參數(shù)則直接傳給matplotlib.axes.Axes.plot。下面來解釋一下這些特定的參數(shù)。

1.xs和ys:x軸和y軸坐標(biāo)。

2.zs:這是z軸的坐標(biāo)值,可以是所有點(diǎn)對應(yīng)一個(gè)值,或者是每個(gè)點(diǎn)對應(yīng)一個(gè)值。

3.zdir:決定哪個(gè)坐標(biāo)軸作為z軸的維度(通常是zs,但是也可以是xs或者ys)。

提示:模塊mpl_toolkits.mplot3d.art3d包含了3D artist代碼和將2D artists轉(zhuǎn)化為3D版本的函數(shù)。在該模塊中有一個(gè)rotate_axes方法,該方法可以被添加到Axes3D中來對坐標(biāo)重新排序,這樣坐標(biāo)軸就與zdir一起旋轉(zhuǎn)了。zdir默認(rèn)值為z。在坐標(biāo)軸前加一個(gè)'``-``'會進(jìn)行反轉(zhuǎn)轉(zhuǎn)換,這樣一來,zdir的值就可以是x、-x、y、-y、z或者-z。

操作步驟

以下代碼演示了我們所解釋的概念。

import randomimport numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.dates as mdatesfrom mpl_toolkits.mplot3d import Axes3Dmpl.rcParams['font.size'] = 10fig = plt.figure() ax = fig.add_subplot(111, projection='3d')for z in [2011, 2012, 2013, 2014]:xs = xrange(1,13)ys = 1000 * np.random.rand(12)color =plt.cm.Set2(random.choice(xrange(plt.cm.Set2.N)))ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs)) ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))ax.set_xlabel('Month') ax.set_ylabel('Year') ax.set_zlabel('Sales Net [usd]')plt.show()

上述代碼生成如圖5-1所示的圖表。


圖5-1

工作原理

我們需要像在2D世界中那樣做相同的準(zhǔn)備工作。不同的是,在這里需要指定后端(backend)的種類。然后生成了一些隨機(jī)數(shù)據(jù),例如4年的銷售額(2011-2014)。

我們需要為3D坐標(biāo)軸指定相同的Z值。

從顏色映射集合中隨機(jī)選擇一種顏色,然后把它和每一個(gè)Z-order集合的xs、ys對關(guān)聯(lián)起來。最后,用xs、ys對渲染出柱狀條序列。

補(bǔ)充說明

其他的一些matplotlib的2D繪圖函數(shù)在這里也是可以用的,例如scatter()和plot()有著相似的接口,但有額外的點(diǎn)標(biāo)記大小參數(shù)。我們對contour、contourf和bar也非常熟悉。

僅在3D中出現(xiàn)的新圖表類型有線框圖(wireframe)、曲面圖(surface)和三翼面圖(tri-surface)。

在下面的示例代碼中,我們繪制了著名的Pringle函數(shù)的三翼面圖,數(shù)學(xué)專業(yè)上的叫法是雙曲面拋物線(hyperbolic paraboloid)。

from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm import matplotlib.pyplot as plt import numpy as npn_angles = 36 n_radii = 8# An array of radii # Does not include radius r=0, this is to eliminate duplicate points radii = np.linspace(0.125, 1.0, n_radii)# An array of angles angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)# Repeat all angles for each radius angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)# Convert polar (radii, angles) coords to cartesian (x, y) coords # (0, 0) is added here. There are no duplicate points in the (x, y) plane x = np.append(0, (radii * np.cos(angles)).flatten()) y = np.append(0, (radii * np.sin(angles)).flatten())# Pringle surfacez = np.sin(-x * y)fig = plt.figure() ax = fig.gca(projection='3d')ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)plt.show()

上面的代碼生成如圖5-2所示的圖形。


圖5-2

本文摘自《Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)》


Python數(shù)據(jù)可視化編程實(shí)戰(zhàn)

內(nèi)容簡介:
本書是一本使用Python實(shí)現(xiàn)數(shù)據(jù)可視化編程的實(shí)戰(zhàn)指南,介紹了如何使用Python最流行的庫,通過60余種方法創(chuàng)建美觀的數(shù)據(jù)可視化效果。

全書共8章,分別介紹了準(zhǔn)備工作環(huán)境、了解數(shù)據(jù)、繪制并定制化圖表、學(xué)習(xí)更多圖表和定制化、創(chuàng)建3D可視化圖表、用圖像和地圖繪制圖表、使用正確的圖表理解數(shù)據(jù)以及更多的matplotlib知識。

本書適合那些對Python編程有一定基礎(chǔ)的開發(fā)人員閱讀,可以幫助讀者從頭開始了解數(shù)據(jù)、數(shù)據(jù)格式、數(shù)據(jù)可視化,并學(xué)會使用Python可視化數(shù)據(jù)。

點(diǎn)此購買:http://item.jd.com/11676691.html

總結(jié)

以上是生活随笔為你收集整理的【Python实现数据可视化】创建3D柱状图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。