這篇文章介紹的主要內(nèi)容是,利用Python pyecharts去繪制柱狀圖,涉及到內(nèi)容知識(shí)點(diǎn)還是比較的多的,那么,具體需要怎么操作呢?下面就給大家以案例的形式,去做一個(gè)介紹,大家仔細(xì)的閱讀下。
主題介紹
pyecharts里面有很多的主題可以供我們選擇,我們可以根據(jù)自己的需要完成主題的配置,這樣就告別了軟件的限制,可以隨意的發(fā)揮自己的藝術(shù)細(xì)胞了。
圖表參數(shù)
''' def add_yaxis( #系列名稱,用于tooltip的顯示,legend的圖例篩選。 series_name:str, #系列數(shù)據(jù) y_axis:Sequence[Numeric,opts.BarItem,dict], #是否選中圖例 is_selected:bool=True, #使用的x軸的index,在單個(gè)圖表實(shí)例中存在多個(gè)x軸的時(shí)候有用。 xaxis_index:Optional[Numeric]=None, #使用的y軸的index,在單個(gè)圖表實(shí)例中存在多個(gè)y軸的時(shí)候有用。 yaxis_index:Optional[Numeric]=None, #是否啟用圖例hover時(shí)的聯(lián)動(dòng)高亮 is_legend_hover_link:bool=True, #系列l(wèi)abel顏色 color:Optional[str]=None, #是否顯示柱條的背景色。通過backgroundStyle配置背景樣式。 is_show_background:bool=False, #每一個(gè)柱條的背景樣式。需要將showBackground設(shè)置為true時(shí)才有效。 background_style:types.Union[types.BarBackground,dict,None]=None, #數(shù)據(jù)堆疊,同個(gè)類目軸上系列配置相同的stack值可以堆疊放置。 stack:Optional[str]=None, #柱條的寬度,不設(shè)時(shí)自適應(yīng)。 #可以是絕對(duì)值例如40或者百分?jǐn)?shù)例如'60%'。百分?jǐn)?shù)基于自動(dòng)計(jì)算出的每一類目的寬度。 #在同一坐標(biāo)系上,此屬性會(huì)被多個(gè)'bar'系列共享。此屬性應(yīng)設(shè)置于此坐標(biāo)系中最后一個(gè)'bar'系列上才會(huì)生效,并且是對(duì)此坐標(biāo)系中所有'bar'系列生效。 bar_width:types.Union[types.Numeric,str]=None, #柱條的最大寬度。比barWidth優(yōu)先級(jí)高。 bar_max_width:types.Union[types.Numeric,str]=None, #柱條的最小寬度。在直角坐標(biāo)系中,默認(rèn)值是1。否則默認(rèn)值是null。比barWidth優(yōu)先級(jí)高。 bar_min_width:types.Union[types.Numeric,str]=None, #柱條最小高度,可用于防止某數(shù)據(jù)項(xiàng)的值過小而影響交互。 bar_min_height:types.Numeric=0, #同一系列的柱間距離,默認(rèn)為類目間距的20%,可設(shè)固定值 category_gap:Union[Numeric,str]="20%", #不同系列的柱間距離,為百分比(如'30%',表示柱子寬度的30%)。 #如果想要兩個(gè)系列的柱子重疊,可以設(shè)置gap為'-100%'。這在用柱子做背景的時(shí)候有用。 gap:Optional[str]="30%", #是否開啟大數(shù)據(jù)量?jī)?yōu)化,在數(shù)據(jù)圖形特別多而出現(xiàn)卡頓時(shí)候可以開啟。 #開啟后配合largeThreshold在數(shù)據(jù)量大于指定閾值的時(shí)候?qū)L制進(jìn)行優(yōu)化。 #缺點(diǎn):優(yōu)化后不能自定義設(shè)置單個(gè)數(shù)據(jù)項(xiàng)的樣式。 is_large:bool=False, #開啟繪制優(yōu)化的閾值。 large_threshold:types.Numeric=400, #使用dimensions定義series.data或者dataset.source的每個(gè)維度的信息。 #注意:如果使用了dataset,那么可以在dataset.source的第一行/列中給出dimension名稱。 #于是就不用在這里指定dimension。 #但是,如果在這里指定了dimensions,那么ECharts不再會(huì)自動(dòng)從dataset.source的第一行/列中獲取維度信息。 dimensions:types.Union[types.Sequence,None]=None, #當(dāng)使用dataset時(shí),seriesLayoutBy指定了dataset中用行還是列對(duì)應(yīng)到系列上,也就是說,系列“排布”到dataset的行還是列上??扇≈担? #'column':默認(rèn),dataset的列對(duì)應(yīng)于系列,從而dataset中每一列是一個(gè)維度(dimension)。 #'row':dataset的行對(duì)應(yīng)于系列,從而dataset中每一行是一個(gè)維度(dimension)。 series_layout_by:str="column", #如果series.data沒有指定,并且dataset存在,那么就會(huì)使用dataset。 #datasetIndex指定本系列使用那個(gè)dataset。 dataset_index:types.Numeric=0, #是否裁剪超出坐標(biāo)系部分的圖形。柱狀圖:裁掉所有超出坐標(biāo)系的部分,但是依然保留柱子的寬度 is_clip:bool=True, #柱狀圖所有圖形的zlevel值。 z_level:types.Numeric=0, #柱狀圖組件的所有圖形的z值。控制圖形的前后順序。 #z值小的圖形會(huì)被z值大的圖形覆蓋。 #z相比zlevel優(yōu)先級(jí)更低,而且不會(huì)創(chuàng)建新的Canvas。 z:types.Numeric=2, #標(biāo)簽配置項(xiàng),參考`series_options.LabelOpts` label_opts:Union[opts.LabelOpts,dict]=opts.LabelOpts(), #標(biāo)記點(diǎn)配置項(xiàng),參考`series_options.MarkPointOpts` markpoint_opts:Union[opts.MarkPointOpts,dict,None]=None, #標(biāo)記線配置項(xiàng),參考`series_options.MarkLineOpts` markline_opts:Union[opts.MarkLineOpts,dict,None]=None, #提示框組件配置項(xiàng),參考`series_options.TooltipOpts` tooltip_opts:Union[opts.TooltipOpts,dict,None]=None, #圖元樣式配置項(xiàng),參考`series_options.ItemStyleOpts` itemstyle_opts:Union[opts.ItemStyleOpts,dict,None]=None, #可以定義data的哪個(gè)維度被編碼成什么。 encode:types.Union[types.JSFunc,dict,None]=None, ) '''
我們可以進(jìn)行圖表參數(shù)的配置,完成我們需要的結(jié)果展示。
主題詳解
下面列舉了比較詳細(xì)的主題風(fēng)格,隨意搭配,碰撞出不一樣的火花!
from pyecharts.globals import ThemeType help(ThemeType) """ {"theme":ThemeType.MACARONS} BUILTIN_THEMES=['light','dark','white'] | |CHALK='chalk'#粉筆風(fēng) | |DARK='dark'#暗黑風(fēng) | |ESSOS='essos'#厄索斯大陸 | |INFOGRAPHIC='infographic'#信息圖 | |LIGHT='light'#明亮風(fēng)格 | |MACARONS='macarons'#馬卡龍 | |PURPLE_PASSION='purple-passion'#紫色激情 | |ROMA='roma'#石榴 | |ROMANTIC='romantic'#浪漫風(fēng) | |SHINE='shine'#閃耀風(fēng) | |VINTAGE='vintage'#復(fù)古風(fēng) | |WALDEN='walden'#瓦爾登湖 | |WESTEROS='westeros'#維斯特洛大陸 | |WHITE='white'#潔白風(fēng) | |WONDERLAND='wonderland'#仙境 """
柱狀圖模板系列
海量數(shù)據(jù)柱狀圖動(dòng)畫展示
非常多的數(shù)據(jù)集,我們需要展示的話,我們可以利用這個(gè)模板進(jìn)行展示,下面由于數(shù)據(jù)量過多我就不展示全部的數(shù)據(jù)了。
import pyecharts.options as opts from pyecharts.charts import Bar category=["類目{}".format(i)for i in range(0,100)] red_bar=['數(shù)據(jù)集非常多!?。?!'] ( Bar(init_opts=opts.InitOpts(width="1500px",height="700px")) .add_xaxis(xaxis_data=category) .add_yaxis( series_name="系列1",y_axis=red_bar,label_opts=opts.LabelOpts(is_show=False) ) .add_yaxis( series_name="系列2", y_axis=blue_bar, label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts( title_opts=opts.TitleOpts(title="柱狀圖動(dòng)畫延遲"), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=False)), yaxis_opts=opts.AxisOpts( axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ), ) .render("柱狀圖動(dòng)畫延遲.html") ) print("圖表已生成!請(qǐng)查收!")
收入支出柱狀圖(適用于記賬)
我們?cè)谌粘5纳钪校惺杖胍灿兄С?,這個(gè)模板就是把收入和支出直觀的展示在讀者面前。
from pyecharts.charts import Bar from pyecharts import options as opts #一般不適用 x_data=[f"11月{str(i)}日"for i in range(1,12)] y_total=[0,900,1245,1530,1376,1376,1511,1689,1856,1495,1292] y_in=[900,345,393,"-","-",135,178,286,"-","-","-"] y_out=["-","-","-",108,154,"-","-","-",119,361,203] bar=( Bar() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="", y_axis=y_total, stack="總量", itemstyle_opts=opts.ItemStyleOpts(color="rgba(0,0,0,0)"), ) .add_yaxis(series_name="收入",y_axis=y_in,stack="總量") .add_yaxis(series_name="支出",y_axis=y_out,stack="總量") .set_global_opts(yaxis_opts=opts.AxisOpts(type_="value")) .render("收入支出柱狀圖.html") ) print("圖表已生成!請(qǐng)查收!") 三維數(shù)據(jù)疊加 from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c=( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A",Faker.values(),stack="stack1") .add_yaxis("商家B",Faker.values(),stack="stack1") .add_yaxis("商家C",Faker.values(),stack="stack1") .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts(title_opts=opts.TitleOpts(title="標(biāo)題")) .render("三維數(shù)據(jù)折疊.html") ) print("圖表已生成!查收!")
柱狀圖與折線圖多維展示(同屏展示)
柱狀圖里面也有折線圖,適合我們?cè)谔囟ㄇ闆r下進(jìn)行數(shù)據(jù)展示,效果還是比較的直觀,方便我們可以直接get到數(shù)據(jù)的價(jià)值。
import pyecharts.options as opts from pyecharts.charts import Bar,Line x_data=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"] bar=( Bar(init_opts=opts.InitOpts(width="1100px",height="600px")) .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="蒸發(fā)量", y_axis=[ 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3, ], label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="降水量", y_axis=[ 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3, ], label_opts=opts.LabelOpts(is_show=False), ) .extend_axis( yaxis=opts.AxisOpts( name="溫度", type_="value", min_=0, max_=25, interval=5, axislabel_opts=opts.LabelOpts(formatter="{value}°C"), ) ) .set_global_opts( tooltip_opts=opts.TooltipOpts( is_show=True,trigger="axis",axis_pointer_type="cross" ), xaxis_opts=opts.AxisOpts( name='月份', name_location='middle', name_gap=30,#標(biāo)簽與軸線之間的距離,默認(rèn)為20,最好不要設(shè)置20 name_textstyle_opts=opts.TextStyleOpts( font_family='Times New Roman', font_size=16,#標(biāo)簽字體大小 #type_="category", #axispointer_opts=opts.AxisPointerOpts(is_show=True,type_="shadow"), )), yaxis_opts=opts.AxisOpts( name="水量", type_="value", min_=0, max_=250, interval=50, axislabel_opts=opts.LabelOpts(formatter="{value}ml"), axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ), ) ) line=( Line() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="平均溫度", yaxis_index=1, y_axis=[2.0,2.2,3.3,4.5,6.3,10.2,20.3,23.4,23.0,16.5,12.0,6.2], label_opts=opts.LabelOpts(is_show=False), ) ) bar.overlap(line).render("折線圖-柱狀圖多維展示.html") print("圖表已生成!請(qǐng)查收!")
import pyecharts.options as opts from pyecharts.charts import Bar,Line colors=["#5793f3","#d14a61","#675bba"] x_data=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"] legend_list=["蒸發(fā)量","降水量","平均溫度"] evaporation_capacity=[ 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3, ] rainfall_capacity=[ 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3, ] average_temperature=[2.0,2.2,3.3,4.5,6.3,10.2,20.3,23.4,23.0,16.5,12.0,6.2] bar=( Bar(init_opts=opts.InitOpts(width="1100px",height="600px")) .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="蒸發(fā)量", y_axis=evaporation_capacity, yaxis_index=0, color=colors[1], ) .add_yaxis( series_name="降水量",y_axis=rainfall_capacity,yaxis_index=1,color=colors[0] ) .extend_axis( yaxis=opts.AxisOpts( name="蒸發(fā)量", type_="value", min_=0, max_=250, position="right", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color=colors[1]) ), axislabel_opts=opts.LabelOpts(formatter="{value}ml"), ) ) .extend_axis( yaxis=opts.AxisOpts( type_="value", name="溫度", min_=0, max_=25, position="left", axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color=colors[2]) ), axislabel_opts=opts.LabelOpts(formatter="{value}°C"), splitline_opts=opts.SplitLineOpts( is_show=True,linestyle_opts=opts.LineStyleOpts(opacity=1) ), ) ) .set_global_opts( yaxis_opts=opts.AxisOpts( type_="value", name="降水量", min_=0, max_=250, position="right", offset=80, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color=colors[0]) ), axislabel_opts=opts.LabelOpts(formatter="{value}ml"), ), tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross"), ) ) line=( Line() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="平均溫度",y_axis=average_temperature,yaxis_index=2,color=colors[2] ) ) bar.overlap(line).render("多維展示顯示數(shù)據(jù).html")
單列多維數(shù)據(jù)展示
from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.commons.utils import JsCode from pyecharts.globals import ThemeType ''' 功能:定義多個(gè)列表,一個(gè)單列柱狀圖里面可以顯示多個(gè)產(chǎn)品的數(shù)量(顯示各自所占比例)達(dá)到一圖多效果展示 應(yīng)用場(chǎng)景:比如有3個(gè)產(chǎn)品,分別在星期一到星期天有不同的銷售額,每一天三個(gè)不同的產(chǎn)品也都有各自的銷售額 需要同時(shí)展示出這些信息,并分析出每一個(gè)產(chǎn)品在一天中所占比例是多少 涉及知識(shí):列表里面嵌套多個(gè)字典 ''' list2=[ {"value":12,"percent":12/(12+3)},#對(duì)于各自的值,同時(shí)對(duì)于各自的百分比 {"value":23,"percent":23/(23+21)}, {"value":33,"percent":33/(33+5)}, {"value":3,"percent":3/(3+52)}, {"value":33,"percent":33/(33+43)}, {"value":45,"percent":45/(45+3)}, {"value":23,"percent":23/(23+13)}, ] list3=[ {"value":3,"percent":3/(12+3)}, {"value":21,"percent":21/(23+21)}, {"value":5,"percent":5/(33+5)}, {"value":52,"percent":52/(3+52)}, {"value":43,"percent":43/(33+43)}, {"value":3,"percent":45/(45+3)}, {"value":13,"percent":13/(23+13)}, ] #可以添加多個(gè)列表 #list4=[] c=( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis([1,2,3,4,5,6,7])#橫坐標(biāo)變量參數(shù) #數(shù)據(jù)堆疊,同個(gè)類目軸上系列配置相同的stack值可以堆疊放置 #同一系列的柱間距離,默認(rèn)為類目間距的20%,可設(shè)固定值 .add_yaxis("產(chǎn)品1",list2,stack="stack1",category_gap="50%") .add_yaxis("產(chǎn)品2",list3,stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data.percent*100).toFixed()+'%';}" ), ) ) #X Y軸的系列配置 .set_global_opts(title_opts=opts.TitleOpts(title="標(biāo)題"), xaxis_opts=opts.AxisOpts( name='星期', name_location='middle', name_gap=30,#標(biāo)簽與軸線之間的距離,默認(rèn)為20,最好不要設(shè)置20 name_textstyle_opts=opts.TextStyleOpts( font_family='Times New Roman', font_size=16#標(biāo)簽字體大小 )), yaxis_opts=opts.AxisOpts( name='數(shù)量', name_location='middle', name_gap=30, name_textstyle_opts=opts.TextStyleOpts( font_family='Times New Roman', font_size=16 #font_weight='bolder', )), #toolbox_opts=opts.ToolboxOpts()#工具選項(xiàng) ) .render("單列多維占比層次柱狀圖.html") ) print("圖表已生成!請(qǐng)查收!")
3D柱狀圖
這類圖表一般不會(huì)用到,但是pyecharts也可以生成這種炫酷的3D模板,來看看吧!
上述3D圖形都可以通過鼠標(biāo)進(jìn)行控制,翻轉(zhuǎn)
import random from pyecharts import options as opts from pyecharts.charts import Bar3D x_data=y_data=list(range(10)) def generate_data(): data=[] for j in range(10): for k in range(10): value=random.randint(0,9) data.append([j,k,value*2+4]) return data bar3d=Bar3D(init_opts=opts.InitOpts(width="1500px",height="700px")) for _ in range(10): bar3d.add( "", generate_data(), shading="lambert", xaxis3d_opts=opts.Axis3DOpts(data=x_data,type_="value"), yaxis3d_opts=opts.Axis3DOpts(data=y_data,type_="value"), zaxis3d_opts=opts.Axis3DOpts(type_="value"), ) bar3d.set_global_opts(title_opts=opts.TitleOpts("Bar3D-堆疊柱狀圖示例")) bar3d.set_series_opts(**{"stack":"stack"}) bar3d.render("3D堆疊柱狀圖.html")
柱狀圖的模板大全差不多都是這些了,下期文章我們一起領(lǐng)略折線圖的魅力吧!
到此為止,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128310.html
小編寫這篇文章的一個(gè)主要目的,繼續(xù)為大家介紹關(guān)于Python相關(guān)事宜,介紹的內(nèi)容主要是教我們?nèi)绾稳ダL制餅狀圖,具體怎么去做呢?下面就給大家詳細(xì)的解答下?! 「拍睢 ★瀳D(pie chart)是用圓形及圓內(nèi)扇形的角度來表示數(shù)值大小的圖形,它主要用于表示一個(gè)樣本(或總體)中各組成部分的數(shù)據(jù)占全部數(shù)據(jù)的比例。僅排列在工作表的一列或一行中的數(shù)據(jù)可以繪制到餅圖中。餅圖顯示一個(gè)數(shù)據(jù)系列(數(shù)據(jù)系列:在圖表中...
小編寫這篇文章的主要目的,主要是給大家去做一個(gè)解答,解答的內(nèi)容主要是關(guān)于Python pyecharts的一些案例,包括如何使用它去進(jìn)行繪制一個(gè)相關(guān)的散點(diǎn)圖,怎么能夠快速的去進(jìn)行繪制。就具體的內(nèi)容,下面就給大家詳細(xì)解答下?! ∈裁词巧Ⅻc(diǎn)圖? 散點(diǎn)圖是指在數(shù)理統(tǒng)計(jì)回歸分析中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的分布圖,散點(diǎn)圖表示因變量隨自變量而變化的大致趨勢(shì),由此趨勢(shì)可以選擇合適的函數(shù)進(jìn)行經(jīng)驗(yàn)分布的擬合...
小編寫這篇文章的主要目的,主要是給大家做一個(gè)詳細(xì)的介紹,介紹的內(nèi)容是Python可視化神器,這個(gè)神器指的是pyecharts,那么,怎么樣利用這種語言去進(jìn)行繪制箱型圖呢?下面小編就給大家詳細(xì)解答下。 概念 后面的圖形都是一些專業(yè)的統(tǒng)計(jì)圖形,當(dāng)然也會(huì)是我們可視化的對(duì)象?! ∠湫螆D(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數(shù)據(jù)分散情況資料的統(tǒng)計(jì)圖。因形狀如箱子而得名。...
Python pyecharts作為常用的數(shù)據(jù)可視化軟件,能夠清晰的將海量的數(shù)據(jù),去做一個(gè)拆分,要是更直觀的去查看數(shù)據(jù)圖表的話,就需要去制作云圖了?那么,怎么制作云圖呢?下面就給大家詳細(xì)的做個(gè)解答?! ≡~云圖 什么是詞云圖,相信大家肯定不會(huì)感到陌生,一本書統(tǒng)計(jì)里面出現(xiàn)的詞頻,然后可視化展示,讓讀者快速的了解這個(gè)主題綱要,這就是詞云的直接效果?! ≡~云圖系列模板 固定模式詞云圖 修改一些參...
小編寫這篇文章的主要方法,就是介紹關(guān)于Python pyecharts的一些相關(guān)技巧,包括教給大家怎么去使用Python pyecharts繪制雷達(dá)圖。其實(shí),說起來還是挺麻煩的,那么,我們要怎么去繪制雷達(dá)圖呢?有沒有什么比較好用的方法呢?下面給大家詳細(xì)解答下?! ±走_(dá)圖 雷達(dá)圖是以從同一點(diǎn)開始的軸上表示的三個(gè)或更多個(gè)定量變量的二維圖表的形式顯示多變量數(shù)據(jù)的圖形方法。軸的相對(duì)位置和角度通常是無...
閱讀 956·2023-01-14 11:38
閱讀 936·2023-01-14 11:04
閱讀 787·2023-01-14 10:48
閱讀 2157·2023-01-14 10:34
閱讀 1005·2023-01-14 10:24
閱讀 895·2023-01-14 10:18
閱讀 545·2023-01-14 10:09
閱讀 622·2023-01-14 10:02