Python?pyecharts繪制條形圖詳解
一、簡(jiǎn)介
關(guān)于具體詳情,請(qǐng)咨詢:pyecharts官網(wǎng)
pyecharts是一個(gè)由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可。而Python 是一門富有表達(dá)力的語(yǔ)言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上數(shù)據(jù)可視化時(shí),pyecharts誕生了。Echarts是用JS來寫的,而我們使用pyecharts則可以使用Python來調(diào)用里面的API。
優(yōu)點(diǎn):
簡(jiǎn)潔的 API 設(shè)計(jì),使用如絲滑般流暢,支持鏈?zhǔn)秸{(diào)用
囊括了 30+ 種常見圖表,應(yīng)有盡有
支持主流 Notebook環(huán)境,Jupyter Notebook 和 JupyterLab
可輕松集成至 Flask,Django 等主流 Web 框架
高度靈活的配置項(xiàng),可輕松搭配出精美的圖表
詳細(xì)的文檔和示例,幫助開發(fā)者更快的上手項(xiàng)目
多達(dá) 400+地圖文件以及原生的百度地圖,為地理數(shù)據(jù)可視化提供強(qiáng)有力的支持。
二、整理數(shù)據(jù)
安裝:
pip install pyecharts
1、配置主題
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) # 第一種 Bar({"theme": ThemeType.MACARONS}) # 第二種
2、柱狀圖 Bar - Bar_base_dict_config
import os from matplotlib import pyplot as plt from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.commons.utils import JsCode from pyecharts.globals import ThemeType list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(list1) .add_yaxis("票價(jià)", list2, stack="stack1", category_gap="50%") .add_yaxis("人次", list3, stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ) ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts=opts.TitleOpts(title='中國(guó)電影票房',subtitle='按地區(qū)比較票價(jià)與人次') ) ) # c.render("cnbo1.html") # 生成html圖片 # os.system("cnbo01.html") # 執(zhí)行完代碼直接跳出來圖片 c.render_notebook() # 直接在代碼區(qū)域展示圖片
3、樣例數(shù)據(jù) Faker.choose()
使用這段代碼會(huì)隨機(jī)調(diào)用系統(tǒng)的樣例參數(shù):
.add_xaxis(Faker.choose())
from pyecharts.faker import Faker list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() c = ( Bar({"theme": ThemeType.MACARONS}) ### 配置好看的圖表主題?。。? .add_xaxis(Faker.choose()) ### 這句話表示使用隨機(jī)的后臺(tái)樣例數(shù)據(jù) .add_yaxis("票價(jià)", list2, stack="stack1", category_gap="50%") .add_yaxis("人次", list3, stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ) ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts={"text":"樣例數(shù)據(jù)","subtext":"使用Faker.choose()"} ) ) c.render("cnbo1.html") # 生成html圖片 # os.system("cnbo1.html") # 執(zhí)行完代碼直接跳出來圖片 c.render_notebook() # 直接在代碼區(qū)域展示圖片
4、滾動(dòng)條 Bar - Bar_datazoom_slider
datazoom_opts=opts.DataZoomOpts()
表示可以滑動(dòng)的滾動(dòng)條:
list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(list1) .add_yaxis("票價(jià)", list2, stack="stack1", category_gap="50%") .add_yaxis("人次", list3, stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ) ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts=opts.TitleOpts(title='中國(guó)電影票房',subtitle='按地區(qū)比較票價(jià)與人次'), brush_opts=opts.BrushOpts() ,### 使用這個(gè)可以使圖片的右上角多出來一些工具 datazoom_opts=opts.DataZoomOpts(), ### 可以使最下面多出滾動(dòng)條 ) ) c.render("cnbo2.html") # 生成html圖片 # os.system("cnbo01.html") # 執(zhí)行完代碼直接跳出來圖片 c.render_notebook() # 直接在代碼區(qū)域展示圖片
5、鼠標(biāo)移動(dòng)效果 Bar - Bar_datazoom_inside
根據(jù)鼠標(biāo)來放大與縮小的效果:
from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c = ( Bar() .add_xaxis(Faker.days_attrs) .add_yaxis("商家A", Faker.days_values, color=Faker.rand_color()) .set_global_opts( title_opts=opts.TitleOpts(title="Bar-DataZoom(inside)"), datazoom_opts=opts.DataZoomOpts(type_="inside"), ) .render("bar_datazoom_inside.html") )
6、顯示最值 Bar - Bar_markpoint_type
list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.HALLOWEEN)) .add_xaxis(list1) .add_yaxis("票價(jià)", list2, stack="stack1", category_gap="50%") .add_yaxis("人次", list3, stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ), markpoint_opts=opts.MarkPointOpts( ######### data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), opts.MarkPointItem(type_="average", name="平均值"), ] ),######### ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts=opts.TitleOpts(title='中國(guó)電影票房',subtitle='按地區(qū)比較票價(jià)與人次'), brush_opts=opts.BrushOpts() ,### 使用這個(gè)可以使圖片的右上角多出來一些工具 datazoom_opts=opts.DataZoomOpts(orient='vertical'), ) ) c.render("cnbo2.html") # 生成html圖片 # os.system("cnbo01.html") # 執(zhí)行完代碼直接跳出來圖片 c.render_notebook() # 直接在代碼區(qū)域展示圖片
7、改變滾動(dòng)條在側(cè)面 Bar - Bar_datazoom_slider_vertical
list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK)) .add_xaxis(list1) .add_yaxis("票價(jià)", list2, stack="stack1", category_gap="50%") .add_yaxis("人次", list3, stack="stack1",category_gap="50%") .set_series_opts( label_opts=opts.LabelOpts( position="right", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ) ) .set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)), title_opts=opts.TitleOpts(title='中國(guó)電影票房',subtitle='按地區(qū)比較票價(jià)與人次'), brush_opts=opts.BrushOpts() ,### 使用這個(gè)可以使圖片的右上角多出來一些工具 datazoom_opts=opts.DataZoomOpts(orient='vertical'), ) ) c.render("cnbo2.html") # 生成html圖片 # os.system("cnbo01.html") # 執(zhí)行完代碼直接跳出來圖片 c.render_notebook() # 直接在代碼區(qū)域展示圖片
8、多個(gè)Y軸
colors=['#5793f3','#d14a61','#675bba'] legend_list=['票房','人次','價(jià)格','評(píng)價(jià)'] list1=cnbodfsort['REGION'].tolist() list2=cnbodfsort['PRICE'].tolist() list3=cnbodfsort['PERSONS'].tolist() list4=cnbodfsort['BO'].tolist() list5=cnbodfsort['points'].tolist() c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,width="1600px",height="600px")) .add_xaxis(list1) .add_yaxis("評(píng)分", list5,yaxis_index=0,category_gap="50%",color=colors[2]) .add_yaxis("票價(jià)", list2,yaxis_index=0,category_gap="50%",color=colors[0]) .add_yaxis("人次", list3,yaxis_index=0,category_gap="50%",color=colors[1]) .set_series_opts( label_opts=opts.LabelOpts( position="top", formatter=JsCode( "function(x){return Number(x.data).toFixed(2);}" ), ), markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), opts.MarkPointItem(type_="average", name="平均值"), ] ), ) .extend_axis( yaxis=opts.AxisOpts( name="票房", type_="value", min_=1000, max_=150000, interval=10000, position="right", axislabel_opts=opts.LabelOpts(formatter="{value} 萬(wàn)") ) ) .extend_axis( yaxis=opts.AxisOpts( name="評(píng)價(jià)", type_="value", min_=0, max_=11, interval=1, position="left", axislabel_opts=opts.LabelOpts(formatter="{value} 點(diǎn)"), axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color=colors[2]) ), splitline_opts=opts.SplitLineOpts( is_show=True,linestyle_opts=opts.LineStyleOpts(opacity=1) ), ) ) .set_global_opts( yaxis_opts=opts.AxisOpts( type_="value", name="票價(jià)", min_=10, max_=70, position="right", offset=80, axisline_opts=opts.AxisLineOpts( linestyle_opts=opts.LineStyleOpts(color=colors[0]) ), axislabel_opts=opts.LabelOpts(formatter="{value} 元"), ), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), datazoom_opts=opts.DataZoomOpts(orient='vertical'), toolbox_opts=opts.ToolboxOpts(pos_left='120%'), legend_opts=opts.LegendOpts(is_show=False), ) ) line = ( Line() .add_xaxis(xaxis_data=x_data) .add_yaxis( series_name="票房", yaxis_index=1, y_axis=list4, label_opts=opts.LabelOpts(is_show=False), ) ) c.render_notebook() # 直接在代碼區(qū)域展示圖片
雙Y軸:
9、直方圖 Bar - Bar_histogram
# Bar - Bar_histogram from pyecharts.options.global_options import ThemeType from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c = ( Bar({"theme":ThemeType.DARK}) .add_xaxis(cnboregiongb.index.tolist()) .add_yaxis("數(shù)量", cnboregiongb.values.tolist(), category_gap=0, color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方圖")) ) c.render_notebook()
以上就是Python pyecharts繪制條形圖詳解的詳細(xì)內(nèi)容,更多關(guān)于Python pyecharts條形圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
scipy稀疏數(shù)組coo_array的實(shí)現(xiàn)
本文主要介紹了scipy稀疏數(shù)組coo_array的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Django RBAC權(quán)限管理設(shè)計(jì)過程詳解
這篇文章主要介紹了Django RBAC權(quán)限管理設(shè)計(jì)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python運(yùn)用pygame庫(kù)實(shí)現(xiàn)雙人彈球小游戲
這篇文章主要為大家詳細(xì)介紹了python運(yùn)用pygame庫(kù)實(shí)現(xiàn)雙人彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11打包PyQt5應(yīng)用時(shí)的注意事項(xiàng)
這篇文章主要介紹了打包PyQt5應(yīng)用時(shí)的注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2020-02-02使用PyTorch將數(shù)據(jù)從CPU移動(dòng)到GPU的四個(gè)方法
這篇文章給大家介紹了在 PyTorch 中,將數(shù)據(jù)從 CPU 移動(dòng)到 GPU 的幾種方法,使用 .to() 方法,使用 .cuda() 方法,使用 torch.Tensor 構(gòu)造函數(shù)和使用 torch.tensor 構(gòu)造函數(shù)這四個(gè)方法,通過代碼示例介紹非常詳細(xì),需要的朋友可以參考下2024-01-01探秘TensorFlow 和 NumPy 的 Broadcasting 機(jī)制
這篇文章主要介紹了探秘TensorFlow 和 NumPy 的 Broadcasting 機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python的Flask框架及Nginx實(shí)現(xiàn)靜態(tài)文件訪問限制功能
這篇文章主要介紹了Python的Flask框架及Nginx實(shí)現(xiàn)靜態(tài)文件訪問限制功能,Nginx方面利用到了自帶的XSendfile,需要的朋友可以參考下2016-06-06