版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第10章 Pyecharts可視化 目錄10.1 Pyecharts簡介與安裝 10.1.1 Pyecharts簡介 10.1.2 Pyecharts安裝10.2 公共屬性設置 10.2.1 全局配置項 10.2.2 系列配置項10.3 二維圖像繪制 10.3.1 柱狀圖 10.3.2 折線圖 10.3.3 面積圖 10.3.4 漣漪散點圖 10.3.5 餅狀圖 10.3.6 漏斗圖10.4 三維圖像繪制 10.4.1 三維柱狀圖 10.4.2 三維散點圖 10.4.3 三維地圖10.5 Pyecharts實例第10章 Pyecharts可視化10.1 Pyecharts簡介與安裝10.1.1
2、 Pyecharts簡介 Pyecharts具有如下特性: 簡潔的API設計,支持鏈式調用; 涵蓋30余種常見圖表,覆蓋面廣; 支持主流Notebook環(huán)境Jupyter Notebook和JupyterLab; 可輕松集成至Flask、Django等主流Web框架; 高度靈活的配置項,可輕松搭配出精美的圖表; 詳細的文檔和示例,幫助開發(fā)者更快上手; 多達400余種地圖文件及原生的百度地圖,為地理數據可視化提供強有力的支持。10.1 Pyecharts簡介與安裝 10.1.1 Pyecharts簡介Pyecharts主要分為v0.5.x和v1兩個版本。需要注意的是,v0.5.x和v1版本之間是
3、不兼容的,v1是一個全新的版本,其中涉及的方法和對象均發(fā)生了較大的變化,本章以v1版本為例介紹Pyecharts的基本使用方法。使用Pyecharts繪制圖像的步驟如下: 實例一個具體類型圖表的對象; 為圖表添加通用的配置; 為圖表添加特定的配置; 添加具體數據及配置信息; 生成本地文件,如html、svg、jpeg、png、pdf、gid等格式的文件。 目前,流行的可視化工具種類繁多,表10-1通過適用性、動態(tài)性等方面對Matplotlib與Pyecharts進行對比。10.1 Pyecharts簡介與安裝 10.1.1 Pyecharts簡介 特性MatplotlibPyecharts動態(tài)
4、性交互式靜態(tài)圖復雜度復雜度不高的圖表結構復雜的圖表繪制結果手動導出直接生成多種格式圖像風格學術理論數據工程展示適用性入門容易,高級圖形處理較復雜容易上手先修語言基礎PythonPython、JavaScript10.1 Pyecharts簡介與安裝 10.1.2 Pyecharts安裝 Pyecharts有多種安裝方法,也支持多種平臺,本節(jié)主要介紹在Windows平臺上的安裝方法。推薦通過pip工具來進行在線安裝,命令如下: pip install pyecharts10.1 Pyecharts簡介與安裝 10.2 公共屬性設置 10.2.1 全局配置項全局配置項主要由標題配置項、圖例配置項、
5、提示框配置項、視覺映射配置項等構成全局配置項還包括初始化配置項、坐標軸配置項、畫圖動畫配置項、原生圖像元素等。10.2 公共屬性設置 10.2.1 全局配置項 1初始化配置項 在Pyecharts中,初始化配置項被設計為class InitOpts,保存在class pyecharts.options.InitOpts包中。 名稱含義默認值width圖表畫布寬度,長度單位900pxheight圖表畫布高度,長度單位500pxchart_id圖表 ID,圖表唯一標識,用于在多圖表時區(qū)分Nonerenderer渲染風格,可選canvas, svgRenderType.CANVASpage_titl
6、e網頁標題Awesome-pyechartstheme圖表主題whitebg_color圖表背景顏色Nonejs_host遠程 js host/assets/animation_opts畫圖動畫初始化配置AnimationOpts()10.2 公共屬性設置 10.2.1 全局配置項 2標題配置項 在Pyecharts中,標題配置項被設計為class TitleOpts,保存在class pyecharts.options.TitleOpts包中。 名稱含義默認值title主標題文本,支持使用n換行Nonesubtitle副標題文本,支持使用n換行Nonepos_leftpos_rightpos
7、_toppos_bottomtitle 組件離容器一側(左、右、上、下)的距離;可以是具體像素值、相對于容器高寬的百分比,也可以是top、middle、bottom等自動對齊的內容None名稱含義默認值padding標題內邊距,單位px,接受數組分別設定上、右、下、左邊距5item_gap主副標題之間的間距10title_textstyle_opts主標題字體樣式配置項Nonesubtitle_textstyle_opts副標題字體樣式配置項None10.2 公共屬性設置 10.2.1 全局配置項 3提示框配置項 在Pyecharts中,提示框配置項被設計為class,保存在class pye
8、charts.options.TooltipOpts包中名稱含義默認值is_show是否顯示提示框組件,包括提示框浮層和axisPointerTruetrigger觸發(fā)類型,可選item、axis、noneitemaxis_pointer_type指示器類型,可選line、shadow、none、crosslineformatter標簽內容格式器,支持字符串模板和回調函數兩種形式,返回的字符串均支持用n換行Nonebackground_color提示框浮層的背景顏色Nonetextstyle_opts文字樣式配置項TextStyleOpts(font_size=14)10.2 公共屬性設置 1
9、0.2.1 全局配置項 4坐標軸配置項 在Pyecharts中,坐標軸配置項的應用非常廣泛,它被設計為class,保存在class pyecharts.options.AxisOpts包中。 名稱含義默認值type_坐標軸類型,可選value、category、time、logNonename坐標軸名稱Noneis_show是否顯示x軸Trueis_scale是否脫離0值比例。只在數值軸中(type: value)有效Falsename_rotate坐標軸名字旋轉,角度值Noneaxistick_opts坐標軸刻度線配置項Noneaxislabel_opts坐標軸標簽配置項Nonesplitl
10、ine_opts分割線配置項SplitLineOpts()10.2 公共屬性設置 10.2.1 全局配置項 5視覺映射配置項 在Pyecharts中,視覺映射配置項被設計為class,保存在class pyecharts.options. VisualMapOpts包中。 名稱含義默認值min_指定visualMapPiecewise組件的最小值0max_指定visualMapPiecewise組件的最大值100range_colorvisualMap組件過渡顏色Nonepos_leftpos_rightpos_toppos_bottomvisualMap組件離容器一側(左、右、上、下)的距離
11、??梢允蔷唧w像素值、相對于容器高寬的百分比,也可以是top、middle、bottom等自動對齊的內容Noneorient如何放置visualMap組件,可選horizontal、verticalverticalbackground_colorvisualMap組件的背景色None10.2 公共屬性設置 10.2.2 系列配置項 1標簽配置項 在Pyecharts中,標簽配置項被設計為class,保存在class pyecharts.options.LabelOpts包中。 名稱含義默認值is_show是否顯示標簽Trueposition標簽的位置??蛇xtop、left、right、botto
12、m、inside、insideLeft、insideRight、insideTop、insideBottom、insideTopLeft、insideBottomLeft、insideTopRight、insideBottomRighttopcolor文字的顏色Nonefont_size文字的字體大小12font_style文字字體的風格,可選normal、italic、obliqueNonehorizontal_align文字水平對齊方式,可選left、center、rightNonevertical_align文字垂直對齊方式,可選top、middle、bottomNoneformatte
13、r標簽內容格式器,支持字符串模板和回調函數兩種形式,返回的字符串均支持用n換行None10.2 公共屬性設置 10.2.2 系列配置項 2分割線配置項 在Pyecharts中,分割線配置項被設計為class,保存在class pyecharts.options.SplitLineOpts包中。名稱含義默認值is_show是否顯示分割線Falselinestyle_opts線風格配置項LineStyleOpts()10.2 公共屬性設置 10.2.2 系列配置項 3文字樣式配項置 在Pyecharts中,文字樣式配置項被設計為class,保存在class pyecharts.options.Te
14、xtStyleOpts包中。 名稱含義默認值color文字顏色Nonefont_style文字字體的風格,可選normal、italic、obliqueNonefont_weight主標題文字字體的粗細,可選normal、bold、bolder、lighterNonefont_family文字的字體系列,可選serif、monospace、Arial、Courier New、Microsoft YaHeiNonefont_size文字的字體大小Nonealign文字水平對齊方式Nonepadding文字塊的內邊距Nonerich自定義富文本樣式。利用富文本樣式,可以在標簽中作出非常豐富的效果N
15、one10.3 二維圖像繪制 在Pyecharts中,具有豐富的二維圖形,如折線圖、面積圖、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅狀圖(環(huán)形圖)、漏斗圖及力導向布局圖,同時支持任意維度的堆積和多圖表混合展現。 基本的圖表繪制過程如下: 導入相關的包,并準備數據源; 初始化具體類型圖表; 使用add*()方法加載數據及相關配置項; 使用set_global_opts()完成全局配置,set_series_opts()完成系列配置; 使用render()生成HTML文件。10.3 二維圖像繪制 10.3.1 柱狀圖 在Pyecharts中繪制柱狀圖,涉及以下幾個常用的方法。 (1)bar = Ba
16、r(init_opts=opt.InitOpts() 此方法用于初始化一個Bar對象,實現初始化設置。 (2)bar.add_xaxis() 此方法用于添加x軸數據attr。這是一個通用方法,在其他的圖表中也經常使用。 10.3 二維圖像繪制 10.3.1 柱狀圖(3)bar.add_yaxis() 此方法用于添加y軸數據,同時實現相關設置。參數說明: series_name:系列名稱,用于Tooltip浮動提示框的顯示,legend圖例篩選。 y_axis:系列數據,可以為SequenceNumeric, opts.BarItem, dict is_selected:是否選中圖例,默認為Tr
17、ue。 xaxis_index:使用的x軸的index,在單個圖表實例中存在多個x軸時有用。默認為None。 yaxis_index:使用的y軸的index,在單個圖表實例中存在多個y軸時有用。默認為None。 color:系列標簽顏色。 stack:數據堆疊,同個類目軸上系列配置相同的數據類目可以堆疊放置。默認為None。 category_gap:同一系列的柱間距離,默認為類目間距的20%,可設固定值。 gap:不同系列的柱間距離,百分比數據。默認為None。10.3 二維圖像繪制 10.3.1 柱狀圖(4)bar.render()此方法用于生成本地HTML文件,默認會在當前目錄生成ren
18、der.html文件,也可以傳入路徑參數和文件名,生成一個指定名稱的HTML文件。10.3 二維圖像繪制 10.3.1 柱狀圖from pyecharts import options as optsfrom pyecharts.charts import Barfrom mons.utils import JsCodefrom pyecharts.globals import ThemeTypeimport pandas as pdimport numpy as npfrom pandas import DataFrame,Seriesdata = pd.read_csv(film_orgi
19、n1.csv,encoding=ANSI)#讀取文件data_2 = data.groupby(scores)data_describe = data_2.describe()data_mean = data_describe.iloc:,1mean_values = data_mean.values:,0mean_index = data_mean.indexmean_index_new = mean_values_new = for i in range(len(mean_values):mean_index_new.append(mean_indexi)mean_values_new.a
20、ppend(mean_valuesi)bar = Bar()bar.add_xaxis(mean_index_new)bar.add_yaxis(mean_rank, mean_values_new)bar.render(mean_rank.html)10.3 二維圖像繪制 10.3.1 柱狀圖10.3 二維圖像繪制 10.3.2 折線圖 在Pyecharts中,可以新建Line對象繪制折線圖。Line對象中同樣存在add_yaxis()方法,用于添加y軸數據,同時實現相關設置。add_yaxis()特殊參數說明: is_connect_nones:是否連接空數據,空數據使用None填充。 s
21、ymbol:標記的圖形。標記類型包括circle、rect、roundRect、triangle、diamond、pin、arrow、none。 symbol_size:標記的大小,可以是數字或者數組,默認值為4。 is_smooth:是否平滑曲線,默認為False。 is_step:是否顯示成階梯圖,默認為False。 is_hover_animation:是否開啟hover在拐點標志上的提示動畫效果,默認為True。 z_level:折線圖所有圖形的zlevel值。默認值為0。 z:折線圖所有圖形的z值,控制圖形的前后順序。z值小的圖形會被z值大的圖形覆蓋。z相比zlevel優(yōu)先級更低,而
22、且不會創(chuàng)建新的畫布。默認值為0。10.3 二維圖像繪制 10.3.2 折線圖 from pyecharts import options as optsfrom mons.utils import JsCodefrom pyecharts.globals import ThemeTypefrom pyecharts.globals import SymbolTypeimport pyecharts.options as optsfrom pyecharts.charts import Lineimport pandas as pdimport numpy as npfrom pandas im
23、port DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#讀取文件data_2 = data.groupby(scores)data_describe = data_2.describe()data_mean = data_describe.iloc:,1data_max = data_describe.iloc:,7mean_values = data_mean.values:,0max_values = data_max.values:,0mean_index = data_mean.indexmean_i
24、ndex_new = mean_values_new = max_values_new = for i in range(len(mean_values):mean_index_new.append(str(mean_indexi)mean_values_new.append(int(mean_valuesi)max_values_new.append(max_valuesi)10.3 二維圖像繪制 10.3.2 折線圖c = ( Line() .set_global_opts( tooltip_opts=opts.TooltipOpts(is_show=False), xaxis_opts=
25、opts.AxisOpts(type_=category), yaxis_opts=opts.AxisOpts( type_=value, axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ), ) .add_xaxis(xaxis_data=mean_index_new) .add_yaxis( series_name=mean_rank, y_axis=mean_values_new, symbol=emptyCircle, is_symbol_sh
26、ow=True, label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name=max_rank, y_axis=max_values_new, symbol=emptyCircle, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), ) .render(zhexian_line.html)10.3 二維圖像繪制 10.3.2 折線圖 10.3 二維圖像繪制10.3.3 面積圖 面積圖又稱區(qū)域圖,數據通過兩個數軸表示,在圖中用線把一個個數據點連接
27、起來,數軸和這條線之間的區(qū)域通常用顏色或陰影進行覆蓋,從而增加易讀性。這種圖形強調數量隨時間而變化的程度,也可用于引起人們對總值趨勢的注意,因此面積圖多用來比較兩個或以上多個類別。常見的面積圖有以下3種形式。 普通面積圖:顯示各種數值隨時間或類別變化的趨勢線。 堆積面積圖:顯示每個數值所占大小隨時間或類別變化的趨勢線。 百分比堆積面積圖:顯示每個數值所占百分比隨時間或類別變化的趨勢線。10.3 二維圖像繪制 10.3.3 面積圖面積圖的適用場景:適用于展示或者比較隨時間連續(xù)變化的程度、強調總量數據的場景、顯示部分與整體關系的場景等。 面積圖的優(yōu)勢:具有折線圖和柱狀圖的優(yōu)點,比折線圖更能反映數據
28、信息。 面積圖的劣勢:不適用于多個數據系列的可視化。 在Pyecharts中,折線圖和面積圖使用相同的Line對象創(chuàng)建方法,當設置opts.AreaStyleOpts()時,可將折線內部以指定的顏色填充起來,即顯示為面積圖。10.3 二維圖像繪制 10.3.3 面積圖c = ( Line() .add_xaxis(mean_index_new) .add_yaxis(mean_rank,mean_values_new,is_smooth=True) .add_yaxis(max_rank,max_values_new,is_smooth=True) .set_series_opts( area
29、style_opts=opts.AreaStyleOpts(opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title=Line-面積圖(緊貼 Y 軸), xaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_align_with_label=True), is_scale=False, boundary_gap=False, ), ) .render(boundary_g
30、ap.html)10.3 二維圖像繪制 10.3.3 面積圖10.3 二維圖像繪制 10.3.4 漣漪散點圖 在Pyecharts中,可以新建EffectScatter對象繪制漣漪散點圖。EffectScatter對象中同樣存在add_yaxis()方法,用于添加y軸數據EffectScatter對象可以使用漣漪特效配置項實現漣漪的特殊效果:effect_opts: Unionopts.EffectOpts, dict = opts.EffectOpts()漣漪特效配置項EffectOpts主要包含以下內容,其中is_show、color、symbol_size屬性與上文類似,此處不再贅述。
31、brush_type:波紋的繪制方式,可選stroke和fill,針對Scatter類型有效。 scale:動畫中波紋的最大縮放比例,默認值為2.5。 period:動畫的周期,單位為秒,默認值為4。 symbol:特效圖形的標記。標記類型包括circle、rect、roundRect、triangle、diamond、pin、arrow、none。 trail_length:特效尾跡的長度。取01之間的值,數值越大,尾跡越長。默認為None。10.3 二維圖像繪制 10.3.4 漣漪散點圖from pyecharts import options as optsfrom mons.utils
32、 import JsCodefrom pyecharts.globals import ThemeTypefrom pyecharts.charts import EffectScatterfrom pyecharts.globals import SymbolTypeimport pandas as pdimport numpy as npfrom pandas import DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#讀取文件data_2 = data.groupby(scores)data_descr
33、ibe = data_2.describe()data_mean = data_describe.iloc:,1mean_values = data_mean.values:,0mean_index = data_mean.indexmean_index_new = mean_values_new = 10.3 二維圖像繪制 10.3.4 漣漪散點圖for i in range(len(mean_values):mean_index_new.append(str(mean_indexi)mean_values_new.append(int(mean_valuesi)c = ( EffectSc
34、atter() .add_xaxis(mean_index_new) .add_yaxis(mean_rank,mean_values_new, symbol=SymbolType.ARROW) .set_global_opts(title_opts=opts.TitleOpts(title=EffectScatter-不同Symbol),xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True),yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOp
35、ts(is_show=True) .render(effectscatter_symbol.html)10.3 二維圖像繪制 10.3.4 漣漪散點圖10.3 二維圖像繪制10.3.5 餅狀圖 在Pyecharts中,可以新建Pie對象繪制餅狀圖。Pie對象中存在一個方法:add(),用于添加圖形中的數據,同時實現相關設置。add()中的參數與add.yaxis()相似,這里僅提供特殊的參數說明 data_pair:系列數據項,格式為(key1, value1), (key2, value2)。 radius:餅狀圖的半徑,數組的第一項是內半徑,第二項是外半徑,默認設置成百分比。 center
36、:餅狀圖的中心(圓心)坐標,數組的第一項是橫坐標,第二項是縱坐標。默認設置成百分比。 rosetype:是否展示成南丁格爾玫瑰圖,通過半徑區(qū)分數據大小,有radius和area兩種模式。10.3 二維圖像繪制10.3.5 餅狀圖import pyecharts.options as optsfrom pyecharts.charts import Pieimport pandas as pdimport numpy as npfrom pandas import DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#
37、讀取文件data_2 = data.groupby(scores)data_describe = data_2.describe()data_mean = data_describe.iloc:,1mean_values = data_mean.values:,0mean_index = data_mean.indexmean_index_new = mean_values_new = for i in range(len(mean_values): mean_index_new.append(str(mean_indexi) mean_values_new.append(int(mean_v
38、aluesi)data_pair = list(z) for z in zip(mean_index_new, mean_values_new)data_pair.sort(key=lambda x: x1)10.3 二維圖像繪制10.3.5 餅狀圖c = ( Pie(init_opts=opts.InitOpts(width=1600px, height=800px, bg_color=#2c343c) .add( series_name=number, data_pair=data_pair, label_opts=opts.LabelOpts(is_show=False, positio
39、n=center), ) .set_global_opts( title_opts=opts.TitleOpts( title=Pie Pic, pos_left=center, pos_top=20, title_textstyle_opts=opts.TextStyleOpts(color=#fff), ), legend_opts=opts.LegendOpts(is_show=False), ) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger=item, formatter=a b: c (d%) ), label_op
40、ts=opts.LabelOpts(color=rgba(255, 255, 255, 0.3), ) .render(pie.html)10.3 二維圖像繪制10.3.5 餅狀圖10.3 二維圖像繪制10.3.5 餅狀圖在餅狀圖的繪制方案中,有一個繪制特例,即南丁格爾玫瑰圖。南丁格爾玫瑰圖又稱極區(qū)圖、雞冠花圖,是一種圓形的直方圖,一般用于表現不同項目之間的區(qū)別,并增強區(qū)別的表現力。由于該圖形通過面積代表不同的項目,而較小的差別體現在面積上,將呈現放大后的視覺差別。這種圖形在視覺上具備一定的創(chuàng)新性和美觀度。在使用餅狀圖繪制南丁格爾玫瑰圖時,需要增加屬性:rosetype,它分為radius和a
41、rea兩種模式。 radius:扇區(qū)圓心角展現數據的百分比,半徑展現數據的大小。 area:所有扇區(qū)圓心角相同,僅通過半徑展現數據大小。10.3 二維圖像繪制10.3.5 餅狀圖v= mean_index_newc = ( Pie() .add( , list(z) for z in zip(v, mean_values_new), radius=30%, 75%, center=25%, 50%, rosetype=radius, label_opts=opts.LabelOpts(is_show=False), ) .add( , list(z) for z in zip(v, mean_
42、values_new), radius=30%, 75%, center=75%, 50%, rosetype=area, ) .render(pie_rosetype.html)10.3 二維圖像繪制10.3.5 餅狀圖10.3 二維圖像繪制 10.3.6 漏斗圖 漏斗圖適用于業(yè)務流程比較規(guī)范、周期長、環(huán)節(jié)多的單流程單向分析。通過漏斗各環(huán)節(jié)業(yè)務數據的比較,能夠直觀地發(fā)現和說明問題所在的環(huán)節(jié),進而作出決策。漏斗圖用梯形面積表示某個環(huán)節(jié)與上一個環(huán)節(jié)數值之間的差異。漏斗圖從上到下有邏輯上的順序關系,表現了隨著業(yè)務流程的推進業(yè)務目標完成的情況。 漏斗圖總是開始于一個100%的數量,結束于一個較小的數
43、量。 漏斗圖的適用場景是:含有分類數據或者連續(xù)數據的場景,如流量分析等。 漏斗圖的優(yōu)勢:可以體現明顯的縮減趨勢,清晰地展示業(yè)務流程中的薄弱環(huán)節(jié),并從中發(fā)現鏈條的瓶頸。 漏斗圖的劣勢:不適合表示無邏輯順序的分類對比。10.3 二維圖像繪制 10.3.6 漏斗圖在Pyecharts中,可以新建Funnel對象繪制漏斗圖。Funnel對象中也有add()方法,用于添加圖形中的數據,同時實現相關設置,與Pie對象中的大部分參數相似,但是也存在一些特殊參數: sort_:數據排序,取值范圍為ascending(升序)、descending(降序)、none,默認為descending。 gap:數據圖形
44、間距,默認值為0。10.3 二維圖像繪制 10.3.6 漏斗圖import pyecharts.options as optsfrom pyecharts.charts import Funnelimport pandas as pdimport numpy as npfrom pandas import DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#讀取文件data_2 = data.groupby(scores)data_describe = data_2.describe()data_mean = da
45、ta_describe.iloc:,1mean_values = data_mean.values:,0mean_index = data_mean.indexmean_index_new = mean_values_new = for i in range(len(mean_values): mean_index_new.append(str(mean_indexi) mean_values_new.append(int(mean_valuesi)10.3 二維圖像繪制 10.3.6 漏斗圖c = ( Funnel() .add( 商品, list(z) for z in zip(mean_
46、index_new, mean_values_new), label_opts=opts.LabelOpts(position=inside), ) .set_global_opts(title_opts=opts.TitleOpts(title=Funnel) .render(funnel.html)10.3 二維圖像繪制 10.3.6 漏斗圖10.4 三維圖像繪制 作為一款強大的可視化工具,Pyecharts在v1版本中,增加了Bar3D、Line3D、Scatter3D三種3D圖表。Pyecharts發(fā)揮了Python語言的特性,可以很好地實現豐富特效的數據可視化。 使用Pyechart
47、s進行三維圖像設置時,Grid3Dopts、Axis3Dopts是常見的3D圖形配置項。需要注意的是,它們并不屬于全局配置項或者系列配置項,它們僅適用于三維圖像繪制中。 在Pyecharts中,三維笛卡兒坐標系配置項保存在class pyecharts.options.Grid3DOpts包中。10.4 三維圖像繪制名稱含義默認值width三維笛卡兒坐標系在三維場景中的寬度200height三維笛卡兒坐標系在三維場景中的高度100depth三維笛卡兒坐標系在三維場景中的深度80is_rotate是否開啟視角繞物體的自動旋轉查看Falserotate_speed物體自轉的速度。單位為角度/s,默
48、認值為10,即36s轉一圈10rotate_sensitivity旋轉操作的靈敏度,值越大,越靈敏。支持使用數組分別設置橫向和縱向的旋轉靈敏度。如果設置為0,則無法旋轉110.4 三維圖像繪制 三維坐標軸配置項保存在class pyecharts.options.Axis3DOpts包中 名稱含義默認值data數據源,序列Nonetype_坐標軸類型,可選value、category、time、logNonename坐標軸名稱Nonename_gap坐標軸名稱與軸線之間的距離,注意是三維空間的距離而非屏幕像素值20min_坐標軸刻度最小值Nonemax_坐標軸刻度最大值Nonesplitnum
49、坐標軸的分割段數,預估值,實際顯示的段數根據分割后坐標軸刻度顯示的易讀程度進行調整Noneinterval強制設置坐標軸分割間隔None10.4 三維圖像繪制 10.4.1 三維柱狀圖 在Pyecharts中,可以新建Bar3D對象繪制三維柱狀圖。Bar3D對象中也有add()方法,用于添加圖形中的數據,同時實現相關設置。參數說明: series_name:系列名稱,用于Tooltip浮動提示框的顯示,legend圖例篩選。 data:系列數據,序列。 shading:三維柱狀圖中三維圖形的著色效果。color:只顯示顏色,不受光照等其他因素的影響。lambert:通過經典的蘭伯特(Lambe
50、rt)著色表現光照帶來的明暗。realistic:真實感渲染。10.4 三維圖像繪制 10.4.1 三維柱狀圖 import pyecharts.options as optsfrom pyecharts.charts import Bar3Dimport randomimport pandas as pdimport numpy as npfrom pandas import DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#讀取文件data_2 = data.groupby(scores)data_descr
51、ibe = data_2.describe()data_mean = data_describe.iloc:,1data_count = data_describe.iloc:,0mean_values = data_mean.values:,0mean_index = data_mean.indexcount_values = data_count.values:,0mean_index_new = mean_values_new = count_values_new = data = 10.4 三維圖像繪制 10.4.1 三維柱狀圖 for i in range(len(mean_valu
52、es): data_item = mean_index_new.append(str(mean_indexi) mean_values_new.append(int(mean_valuesi) count_values_new.append(str(count_valuesi) data_item.append(i) data_item.append(i) data_item.append(int(mean_valuesi) data.append(data_item)c = ( Bar3D() .add( , d1, d0, d2 for d in data, xaxis3d_opts=op
53、ts.Axis3DOpts(mean_values, type_=category), yaxis3d_opts=opts.Axis3DOpts(count_values_new, type_=category), zaxis3d_opts=opts.Axis3DOpts(type_=value), ) .set_global_opts( visualmap_opts=opts.VisualMapOpts(max_=20), title_opts=opts.TitleOpts(title=Bar3D-基本示例), ) .render(bar3d_base.html)10.4 三維圖像繪制 10
54、.4.1 三維柱狀圖 在數據處理時,將mean_values、count_values_new和data中的數據作為3個維度的數據源。在導入包時,使用from pyecharts.charts import Bar3D導入三維柱狀圖的包。然后利用Bar3D()生成一個三維柱狀圖的對象c。 接下來,利用add()方法解包data中的三維數據。同時,對3個坐標軸分別執(zhí)行Axis3Dopts(),實現不同的設置。例如,x軸進行了以下設置:opts.Axis3DOpts(mean_values, type_=category),即設置數據源為mean_values,類別是category。然后設置全局
55、配置項:VisualMapOpts。其中,設置title=Bar3D-基本示例,visualMapPiecewise的最大值(max_)為20。最后生成bar3d_base.html文件10.4 三維圖像繪制 10.4.1 三維柱狀圖 10.4 三維圖像繪制10.4.2 三維散點圖 import randomfrom pyecharts import options as optsfrom pyecharts.charts import Scatter3Dfrom pyecharts.faker import Fakerimport pandas as pdimport numpy as np
56、from pandas import DataFrame,Seriesdata = pd.read_csv(film_orgin1.csv,encoding=ANSI)#讀取文件data_ratings = data.loc:,ratingsdata_rank = data.loc:,rankdata_scores = data.loc:,scoresarray_z = (data_rank.values):,0array_y = (data_scores.values):,0array_x = data_ratings.valuesarray_x_new = for i in array_x
57、:,0:if i = 5-t:array_x_new.append(5)if i = 45-t:array_x_new.append(4.5)if i = 4-t:array_x_new.append(4)10.4 三維圖像繪制10.4.2 三維散點圖 data = for i in range(len(array_z): data_item = data_item.append(str(array_x_newi) data_item.append(str(array_yi) data_item.append(int(array_zi) data.append(data_item)Scatte
58、r_data = datascatter = ( Scatter3D(init_opts = opts.InitOpts(width=900px,height=600px) #初始化 .add(,Scatter_data, grid3d_opts=opts.Grid3DOpts( width=100, depth=100, rotate_speed=5, is_rotate=True ) .set_global_opts( title_opts=opts.TitleOpts(title=3D散點圖), # visualmap_opts=opts.VisualMapOpts( max_=50,
59、#最大值 pos_top=50, # range_color=Faker.visual_color #顏色映射 ) ) .render(3D散點圖.html)10.4 三維圖像繪制10.4.2 三維散點圖 通過from pyecharts.charts import Scatter3D,從Pyecharts中導入Scatter3D,然后直接獲取film_orgin1.csv文件中ratings列、scores列和rank列的數據,分別作為三維圖形的x、y和z軸數據。需要注意的是,由于ratings列的數據格式是字符串,需要將其轉換為數值形式。因此,利用for循環(huán)遍歷全部的ratings信息,將
60、字符串分類轉換為數值。由于字符串只有3種形式,因此此處設置的取值范圍是4、4.5和5。利用for循環(huán)遍歷x、y和z軸的每一項數據,以(x,y,z)的形式成對添加到data和Scatter_data中,此時數據源已經準備完畢。利用Scatter3D()生成一個三維散點圖的對象scatter,同時設置初始化配置項InitOpts:高度為900px,寬度為600px。利用add()方法進行如下設置:顯示Scatter_data中的三維數據;Grid3Dopts中設置寬、高均為100,旋轉角度rotate_speed=5,旋轉選項is_rotate=True。同時,對3個坐標軸分別執(zhí)行Axis3Dop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度某公司電子商務事業(yè)部跨境電商營銷推廣合作協議2篇
- 2025版融創(chuàng)集團房地產合同檔案安全保護與保密要求3篇
- 二零二五年度外匯期貨居間經紀業(yè)務合同修訂版4篇
- 2025版全新煤炭居間合作協議范本下載6篇
- 個性化勞動協議模板2024年版參考版B版
- 個性化咨詢顧問服務協議精簡版版
- 2025年配電工程進度款支付合同
- 2025年度新材料研發(fā)與產業(yè)化合作協議
- 二零二五年度內退員工離職補償及經濟補償合同
- 二零二五年度品牌策劃與品牌維權服務合同2篇
- 機電安裝工程安全管理
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 信息技術部年終述職報告總結
- 高考滿分作文常見結構完全解讀
- 理光投影機pj k360功能介紹
- 六年級數學上冊100道口算題(全冊完整版)
- 八年級數學下冊《第十九章 一次函數》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 小學五年級解方程應用題6
- 年月江西省南昌市某綜合樓工程造價指標及
- 作物栽培學課件棉花
評論
0/150
提交評論