整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          50行Python代碼繪制數(shù)據(jù)大屏,這個(gè)可視化框架真

          50行Python代碼繪制數(shù)據(jù)大屏,這個(gè)可視化框架真的太神了

          者: 俊欣

          來源:關(guān)于數(shù)據(jù)分析與可視化

          今天小編來為大家安利另外一個(gè)用于繪制可視化圖表的Python框架,名叫Dash,建立在FlaskPlotly.js以及React.js的基礎(chǔ)之上,在創(chuàng)建之出的目的是為了幫助前端知識(shí)匱乏的數(shù)據(jù)分析人員,以純Python編程的方式快速制作出交互特性強(qiáng)的數(shù)據(jù)可視化大屏,在經(jīng)過多年的迭代發(fā)展,如今不僅僅可以用來開發(fā)在線數(shù)據(jù)可視化作品,即便是輕量級(jí)的數(shù)據(jù)儀表盤、BI應(yīng)用甚至是博客或者是常規(guī)的網(wǎng)站都隨處可見Dash框架的影子,今天小編就先來介紹一下該框架的一些基礎(chǔ)知識(shí),并且來制作一個(gè)簡(jiǎn)單的數(shù)據(jù)可視化大屏。

          Dash框架中的兩個(gè)基本概念

          我們先來了解一下Dash框架中的兩個(gè)基本概念

          • Layout
          • Callbacks

          Layout顧名思義就是用來設(shè)計(jì)可視化大屏的外觀和布局,添加一些例如下拉框、單選框、復(fù)選框、輸入框、文本框、滑動(dòng)條等組件,其中Dash框架對(duì)HTML標(biāo)簽也進(jìn)行了進(jìn)一步的封裝,使得我們直接可以通過Python代碼來生成和設(shè)計(jì)每一個(gè)網(wǎng)頁(yè)所需要的元素,例如

          <div>
              <h1>Hello World!!</h1>
              <div>
                  <p>Dash converts Python classes into HTML</p>
              </div>
          </div>
          

          我們轉(zhuǎn)化成DashPython結(jié)構(gòu)就是

          html.Div([
              html.H1('Hello Dash'),
              html.Div([
                  html.P('Dash converts Python classes into HTML'),
              ])
          ])
          

          Callbacks也就是回調(diào)函數(shù),基本上是以裝飾器的形式來體現(xiàn)的,實(shí)現(xiàn)前后端異步通信的交互,例如我們?cè)邳c(diǎn)擊按鈕或者下拉框之后出現(xiàn)的功能就是通過回調(diào)函數(shù)來實(shí)現(xiàn)的。

          安裝和導(dǎo)入模塊

          在導(dǎo)入模塊之前,我們先用pip命令來進(jìn)行安裝,

          ! pip install dash   
          ! pip install dash-html-components
          ! pip install dash-core-components                           
          ! pip install plotly
          

          然后我們導(dǎo)入這些剛剛安裝完的模塊,其中dash-html-components用來生成HTML標(biāo)簽,dash-core-components模塊用來生成例如下拉框、輸入框等組件,這里我們還需要用到plotly模塊,因?yàn)槲覀冃枰玫降臄?shù)據(jù)來自該模塊,里面是一眾互聯(lián)網(wǎng)公司過去一段時(shí)間中股價(jià)的走勢(shì)

          import dash
          import dash_html_components as html
          import dash_core_components as dcc
          import plotly.graph_objects as go
          import plotly.express as px
          

          讀取數(shù)據(jù)并且繪制折線圖

          那么我們讀取數(shù)據(jù)并且用plotly來繪制折線圖,代碼如下

          app=dash.Dash()   #實(shí)例化Dash
          df=px.data.stocks() #讀取股票數(shù)據(jù) 
          
          def stock_prices():
              # 繪制折線圖
              fig=go.Figure([go.Scatter(x=df['date'], y=df['AAPL'],
                                          line=dict(color='firebrick', width=4), name='Apple')
                               ])
              fig.update_layout(title='股價(jià)隨著時(shí)間的變幻',
                                xaxis_title='日期',
                                yaxis_title='價(jià)格'
                                )
              return fig
              
          app.layout=html.Div(id='parent', children=[
              html.H1(id='H1', children='Dash 案例一', style={'textAlign': 'center',
                                                           'marginTop': 40, 'marginBottom': 40}),
              dcc.Graph(id='line_plot', figure=stock_prices())
          ])
          
          if __name__=='__main__':
              app.run_server()
          

          我們點(diǎn)擊運(yùn)行之后會(huì)按照提示將url復(fù)制到瀏覽器當(dāng)中便可以看到出來的結(jié)果了,如下所示

          從代碼的邏輯上來看,我們通過Dash框架中的Div方法來進(jìn)行頁(yè)面的布局,其中有參數(shù)id來指定網(wǎng)頁(yè)中的元素,以及style參數(shù)來進(jìn)行樣式的設(shè)計(jì),最后我們將會(huì)指出來的圖表放在dcc.Graph()函數(shù)當(dāng)中。

          添置一個(gè)下拉框

          然后我們?cè)偬碇靡粋€(gè)下拉框,當(dāng)我們點(diǎn)擊這個(gè)下拉框的時(shí)候,可是根據(jù)我們的選擇展示不同公司的股價(jià),代碼如下

          dcc.Dropdown(id='dropdown',
                       options=[
                           {'label': '谷歌', 'value': 'GOOG'},
                           {'label': '蘋果', 'value': 'AAPL'},
                           {'label': '亞馬遜', 'value': 'AMZN'},
                       ],
                       value='GOOG'),
          

          output

          options參數(shù)中的label對(duì)應(yīng)的是下拉框中的各個(gè)標(biāo)簽,而value對(duì)應(yīng)的是DataFrame當(dāng)中的列名

          df.head()
          

          output

          添加回調(diào)函數(shù)

          最后我們將下拉框和繪制折線圖的函數(shù)給連接起來,我們點(diǎn)擊下拉框選中不同的選項(xiàng)的時(shí)候,折線圖也會(huì)相應(yīng)的產(chǎn)生變化,

          @app.callback(Output(component_id='bar_plot', component_property='figure'),
                        [Input(component_id='dropdown', component_property='value')])
          def graph_update(dropdown_value):
              print(dropdown_value)
              # Function for creating line chart showing Google stock prices over time
              fig=go.Figure([go.Scatter(x=df['date'], y=df['{}'.format(dropdown_value)],
                                          line=dict(color='firebrick', width=4))
                               ])
              fig.update_layout(title='股價(jià)隨著時(shí)間的變幻',
                                xaxis_title='日期',
                                yaxis_title='價(jià)格'
                                )
              return fig
          

          我們看到callback()方法中指定輸入和輸出的媒介,其中Input參數(shù),里面的component_id對(duì)應(yīng)的是下拉框的id也就是dropdown,而Output參數(shù),當(dāng)中的component_id對(duì)應(yīng)的是折線圖的id也就是bar_plot,我們來看一下最后出來的結(jié)果如下

          最后,全部的代碼如下所示

          者:俊欣

          來源:關(guān)于數(shù)據(jù)分析與可視化

          今天我們就來說說如何用Pyecharts模塊來制作炫酷的可視化大屏,最后的效果如下

          步驟如下:

          • 分別使用Pyecharts制作各類圖表,包括柱狀圖、地圖、餅圖等等
          • 使用Pyecharts當(dāng)中的組合圖表功能,將所有圖片拼接在一張html文件中進(jìn)行展示

          數(shù)據(jù)的來源

          這次我們使用的數(shù)據(jù)是虛構(gòu)的某超市2021年第一季度的訂單數(shù)據(jù),總共是有1000條,

          df.info()
          

          output

          <class 'pandas.core.frame.DataFrame'>
          RangeIndex: 1000 entries, 0 to 999
          Data columns (total 17 columns):
           #   Column  Non-Null Count  Dtype         
          ---  ------  --------------  -----         
           0   訂單編號(hào)    1000 non-null   object        
           1   分支      1000 non-null   object        
           2   省份      1000 non-null   object        
           3   顧客類型    1000 non-null   object        
           4   性別      1000 non-null   object        
           5   商品類型    1000 non-null   object        
           6   單價(jià)      1000 non-null   float64       
           7   數(shù)量      1000 non-null   int64         
           8   Tax 5%  1000 non-null   float64       
           9   總價(jià)      1000 non-null   float64       
           10  日期      1000 non-null   datetime64[ns]
           .......  
          dtypes: datetime64[ns](1), float64(7), int64(1), object(8)
          memory usage: 132.9+ KB
          

          其中顧客的類型有普通顧客與會(huì)員,性別有男性與女性,剩下的還有包括商品類型、購(gòu)買時(shí)間、支付方式、各個(gè)商品的毛利率等數(shù)據(jù),

          數(shù)據(jù)可視化

          接下來我們開始各個(gè)圖表的繪制,我們先來看餅圖的繪制,代碼并不復(fù)雜,首先我們對(duì)“商品類型”這一列的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)

          products_type_index=df["商品類型"].value_counts().index.tolist()
          products_type_values=df["商品類型"].value_counts().values.tolist()
          

          然后再調(diào)用Pyecharts()模塊中的Pie()實(shí)例進(jìn)行圖表的繪制

          def pie_chart_2():
              
              c=(
                  Pie(init_opts=opts.InitOpts(chart_id=4, bg_color='#1C1C1C',
                                              theme=ThemeType.INFOGRAPHIC))
                  .add("", [list(z) for z in zip(products_type_index,
                                                 products_type_values)])
                  .set_global_opts(title_opts=opts.TitleOpts(title="商品類型分布圖",
                                                             title_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#FFFFFF')),
                                   legend_opts=opts.LegendOpts(orient="vertical",
                                                               pos_left="5%",
                                                               pos_top="10%"))
                  .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
              )
          
              return c
              
          if __name__=="__main__":
              map=map_chart()
              map.render("4.html")
          

          output

          另外,我們也看到了單張圖片當(dāng)中有兩張餅圖的情況,這是使用了Pyecharts()模塊當(dāng)中的Grid()實(shí)例,將若干張繪制完成的圖表遵從一定的順序來進(jìn)行組合

          grid=(
                  Grid(init_opts=opts.InitOpts(width='1000px', height='600px',
                                               chart_id=3, bg_color='#1C1C1C'))
                  .add(c_1, grid_opts=opts.GridOpts(pos_left="60%"))
                  .add(c_2, grid_opts=opts.GridOpts(pos_right="50%"))
              )
          

          地圖

          同樣地,我們將不同省份的數(shù)據(jù)給篩選出來之后,然后進(jìn)行圖表的繪制

          city_index=df["省份"].value_counts().index.tolist()
          city_values=df["省份"].value_counts().values.tolist()
          

          地圖的繪制用的是Pyecharts模塊當(dāng)中的Map()實(shí)例,可以看到顧客幾乎都分布在北京、浙江以及上海這幾個(gè)地方

          def map_chart():
              c=(
                  Map(init_opts=opts.InitOpts(chart_id=2,
                                              bg_color='#1C1C1C'))
                      .add("商家A", [list(z) for z in zip(city_index,
                                                        city_values)], "china")
                      .set_global_opts(
                      title_opts=opts.TitleOpts(title="顧客在全國(guó)的分布圖",
                                                title_textstyle_opts=opts.TextStyleOpts(font_size=25,
                                                                                        color='#FFFFFF')),
                      visualmap_opts=opts.VisualMapOpts(max_=250),
                  )
              )
              return c
              
          if __name__=="__main__":
              map=map_chart()
              map.render("2.html")
          

          output

          直方圖

          我們針對(duì)的是購(gòu)買時(shí)間,看一下哪些購(gòu)買時(shí)間段的人會(huì)比較多

          hour_index=df["小時(shí)"].value_counts().index.tolist()
          hour_index_str=[str(hour_ind) + "時(shí)" for hour_ind in hour_index]
          hour_values=df["小時(shí)"].value_counts().values.tolist()
          

          調(diào)用Bar()實(shí)例進(jìn)行繪制圖表

          def bar_chart():
              c=(
                  Bar(init_opts=opts.InitOpts(chart_id=5, bg_color='#1C1C1C',
                                              theme=ThemeType.CHALK))
                      .add_xaxis(hour_index_str)
                      .add_yaxis("商家A", hour_values)
                      .set_global_opts(title_opts=opts.TitleOpts(title="購(gòu)物的時(shí)間分布",
                                                                 subtitle="購(gòu)物時(shí)間",
                                                                 title_textstyle_opts=opts.TextStyleOpts(font_size=25, color='#FFFFFF')))
              )
              return c
              
          if __name__=="__main__":
              map=map_chart()
              map.render("5.html")
          

          output

          Pyecharts組合圖表

          將繪制出來的若干份圖表組合到一塊兒,總共有這幾種方式

          • Grid: 并行/垂直放置多張圖
          • Page: 順序多圖
          • Tab: 多個(gè)頁(yè)面多圖
          • Timeline: 時(shí)間軸循環(huán)輪播多圖

          我們使用的是Page()示例來順序展示多張圖表,先實(shí)例化該對(duì)象

          page=Page(layout=Page.DraggablePageLayout, page_title="基于Pyecharts的銷售數(shù)據(jù)大屏")
          

          之所以用DraggablePageLayout屬性是為了調(diào)整成我們所想要的布局,然后將我們所繪制的圖表一一添加

          page.add(
              title(),
              map_chart(),
              pie_chart(),
              pie_chart_2(),
              bar_chart(),
          )
          
          page.render('test_2.html')
          

          最后生成一個(gè)test_2.html的文件,然后我們將布局調(diào)整成我們想要的結(jié)果

          對(duì)圖片布局完成之后,要記得點(diǎn)擊左上角的save config按鈕對(duì)布局文件進(jìn)行保存。之后本地會(huì)生成一個(gè)chart_config.json文件,然后運(yùn)行下面的代碼

          page.save_resize_html('test_2.html', cfg_file='chart_config.json', dest='可視化大屏.html')
          

          打開重新生成的可視化大屏.html,便是新的內(nèi)容

          . 前言

          在日常工作中,為了更直觀的發(fā)現(xiàn)數(shù)據(jù)中隱藏的規(guī)律,察覺到變量之間的互動(dòng)關(guān)系,人們常常借助可視化幫助我們更好的給他人解釋現(xiàn)象,做到一圖勝千文的說明效果。

          在Python中,常見的數(shù)據(jù)可視化庫(kù)有:

          • matplotlib 是最常見的2維庫(kù),可以算作可視化的必備技能庫(kù),由于matplotlib是比較底層的庫(kù),api很多,代碼學(xué)起來不太容易。

          • seaborn 是建構(gòu)于matplotlib基礎(chǔ)上,能滿足絕大多數(shù)可視化需求。更特殊的需求還是需要學(xué)習(xí)matplotlib。

          上述兩個(gè)庫(kù)都是靜態(tài)的可視化庫(kù),大多數(shù)做過前端Web開發(fā)的同學(xué)都用到過Echarts.js庫(kù),它是一款前端可視化的JS庫(kù)、功能非常之強(qiáng)大。在使用之前,需要導(dǎo)入js庫(kù)到項(xiàng)目中。對(duì)于平時(shí)用Python較多的同學(xué)而言,如果每次實(shí)現(xiàn)可視化功能(特別是一些小需求),都需要引用js庫(kù)顯然不太方便,于是就在想有沒有Python與Echarts結(jié)合的輪子。答案是肯定的,在Github中就有一個(gè)國(guó)人開發(fā)的一個(gè)Echarts與Python結(jié)合的輪子:Pyecharts,它不僅很好的兼容了web項(xiàng)目,而且可以做到可視化的動(dòng)態(tài)效果。

          2. Pyecharts介紹

          Pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。常規(guī)的Echarts 是由百度開源的一個(gè)數(shù)據(jù)可視化 JS 庫(kù),主要用于數(shù)據(jù)可視化。簡(jiǎn)單來說,Pyecharts是一款將python與echarts結(jié)合的強(qiáng)大的數(shù)據(jù)可視化工具。

          使用 Pyecharts 可以生成獨(dú)立的網(wǎng)頁(yè),也可以在 flask , Django 中集成使用。

          項(xiàng)目介紹:

          http://pyecharts.herokuapp.com/

          項(xiàng)目源碼:

          https://github.com/pyecharts/pyecharts

          從項(xiàng)目文檔介紹可知, pyecharts目前分為兩個(gè)大的系列版本:0.5.x 和v1.x.x。

          V0.5.x

          支持 Python2.7,3.4+

          0.5.x 版本將不再進(jìn)行維護(hù),文檔位于 05x-docs.pyecharts.org。

          V1

          僅支持 Python3.6+

          新版本系列將從 v1.0.0 開始,文檔位于 pyecharts.org;示例位于 gallery.pyecharts.org

          PS: v0.5.x 和 V1 間不兼容,V1 是一個(gè)全新的版本。

          3. Pyecharts支持30+種可視化圖表

          得益于Echarts 項(xiàng)目,目前Pyecharts支持 30+ 種常見圖表,如下所示:

          • Bar(柱狀圖/條形圖)

          • Bar3D(3D 柱狀圖)

          • Boxplot(箱形圖)

          • EffectScatter(散點(diǎn)圖)

          • Funnel(漏斗圖)

          • Gauge(儀表盤)

          • Geo(地理坐標(biāo)系)

          • Graph(關(guān)系圖)

          • HeatMap(熱力圖)

          • Kline(K線圖)

          • Line(折線/面積圖)

          • Line3D(3D 折線圖)

          • Liquid(水球圖)

          • Map(地圖)

          • Parallel(平行坐標(biāo)系)

          • Pie(餅圖)

          • Polar(極坐標(biāo)系)

          • Radar(雷達(dá)圖)

          • Sankey(桑基圖)

          • Scatter(散點(diǎn)圖)

          • Scatter3D(3D 散點(diǎn)圖)

          • ThemeRiver(主題河流圖)

          • WordCloud(詞云圖)

          4. Pyecharts安裝

          1、pip 安裝

          # 安裝 v1 以上版本
          $ pip install pyecharts -U

          # 如果需要安裝 0.5.11 版本的開發(fā)者,可以使用
          # pip install pyecharts==0.5.11

          2、源碼安裝

          # v1 以上版本
          $ git clone https://github.com/pyecharts/pyecharts.git
          # 如果需要安裝 0.5.11 版本,請(qǐng)使用 git clone https://github.com/pyecharts/pyecharts.git -b v05x
          $ cd pyecharts
          $ pip install -r requirements.txt
          $ python setup.py install

          在使用pip安裝庫(kù)時(shí),由于墻的原因,下載時(shí)可能會(huì)出現(xiàn)斷線和速度過慢的問題導(dǎo)致下載失敗,所以建議通過豆瓣源或清華鏡像來進(jìn)行下載:

          # 豆瓣源下載
          pip install -i https://pypi.douban.com/simple pyecharts

          # 清華鏡像源
          pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

          PS: 這里要專門說明一下,自從 0.3.2 開始,為了縮減項(xiàng)目本身的體積以及維持 pyecharts 項(xiàng)目的輕量化運(yùn)行,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表(Geo、Map),可自行安裝對(duì)應(yīng)的地圖文件包。

          # 通過pip命令進(jìn)行安裝
          pip install echarts-countries-pypkg
          pip install echarts-china-provinces-pypkg
          pip install echarts-china-cities-pypkg

          5. Pyecharts官方示例實(shí)戰(zhàn)

          現(xiàn)在我們來開始正式使用pycharts,這里我們先直接使用官方的數(shù)據(jù),感受一下可視化展示效果。

          from pyecharts.charts import Bar
          from pyecharts import options as opts

          # V1 版本開始支持鏈?zhǔn)秸{(diào)用
          bar=(
          Bar
          .add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
          .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
          .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
          .set_global_opts(title_opts=opts.TitleOpts(title="某商場(chǎng)銷售情況"))
          )
          bar.render_notebook

          在這里順便安利一下jupyter,pyecharts在v0.1.9.2版本開始,在jupyter上可以直接調(diào)用實(shí)例(例如上方直接調(diào)用bar.render_notebook())就可以將圖表直接展示出來,非常方便。

          如果腳本在非jupyter環(huán)境運(yùn)行,圖表渲染方法需改為:

          bar.render

          默認(rèn)情況下,pycharts生成圖表為HTML格式,也支持生成png圖片格式,如下:

          from snapshot_selenium import snapshot as driver

          from pyecharts import options as opts
          from pyecharts.charts import Bar
          from pyecharts.render import make_snapshot


          def bar_chart -> Bar:
          c=(
          Bar
          .add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
          .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
          .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
          .reversal_axis
          .set_series_opts(label_opts=opts.LabelOpts(position="right"))
          .set_global_opts(title_opts=opts.TitleOpts(title="Bar-測(cè)試渲染圖片"))
          )
          return c

          # 需要安裝 snapshot-selenium 或者 snapshot-phantomjs
          make_snapshot(driver, bar_chart.render, "bar.png")

          6. Pyecharts幾種高頻使用的可視化圖表

          在上面官方示例中的柱狀圖表我們已經(jīng)能感受到pycharts可視化功能的強(qiáng)大,最后再介始幾種日常工作中常用的可視化圖表及對(duì)應(yīng)示例。

          6.1 Pie餅狀圖

          from pyecharts import options as opts
          from pyecharts.charts import Pie
          from pyecharts.faker import Faker

          pie=(
          Pie
          .add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
          .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
          .set_global_opts(title_opts=opts.TitleOpts(title="Pie-設(shè)置顏色"))
          .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
          )

          pie.render_notebook

          6.2 儀表盤

          from pyecharts import options as opts
          from pyecharts.charts import Gauge

          g=(
          Gauge
          .add("", [("完成率", 66.6)])
          .set_global_opts(title_opts=opts.TitleOpts(title="Gauge-基本示例"))

          )
          g.render_notebook

          6.3 折線圖

          import pyecharts.options as opts
          from pyecharts.charts import Line
          from pyecharts.faker import Faker

          c=(
          Line
          .add_xaxis(Faker.choose)
          .add_yaxis("商家A", Faker.values, is_smooth=True)
          .add_yaxis("商家B", Faker.values, is_smooth=True)
          .set_global_opts(title_opts=opts.TitleOpts(title="Line-smooth"))

          )
          c.render_notebook

          6.4 K線圖

          from pyecharts import options as opts
          from pyecharts.charts import Kline

          data=[
          [2320.26, 2320.26, 2287.3, 2362.94],
          [2300, 2291.3, 2288.26, 2308.38],
          [2295.35, 2346.5, 2295.35, 2345.92],
          [2347.22, 2358.98, 2337.35, 2363.8],
          [2360.75, 2382.48, 2347.89, 2383.76],
          [2383.43, 2385.42, 2371.23, 2391.82],
          [2377.41, 2419.02, 2369.57, 2421.15],
          [2425.92, 2428.15, 2417.58, 2440.38],
          [2411, 2433.13, 2403.3, 2437.42],
          [2432.68, 2334.48, 2427.7, 2441.73],
          [2430.69, 2418.53, 2394.22, 2433.89],
          [2416.62, 2432.4, 2414.4, 2443.03],
          [2441.91, 2421.56, 2418.43, 2444.8],
          [2420.26, 2382.91, 2373.53, 2427.07],
          [2383.49, 2397.18, 2370.61, 2397.94],
          [2378.82, 2325.95, 2309.17, 2378.82],
          [2322.94, 2314.16, 2308.76, 2330.88],
          [2320.62, 2325.82, 2315.01, 2338.78],
          [2313.74, 2293.34, 2289.89, 2340.71],
          [2297.77, 2313.22, 2292.03, 2324.63],
          [2322.32, 2365.59, 2308.92, 2366.16],
          [2364.54, 2359.51, 2330.86, 2369.65],
          [2332.08, 2273.4, 2259.25, 2333.54],
          [2274.81, 2326.31, 2270.1, 2328.14],
          [2333.61, 2347.18, 2321.6, 2351.44],
          [2340.44, 2324.29, 2304.27, 2352.02],
          [2326.42, 2318.61, 2314.59, 2333.67],
          [2314.68, 2310.59, 2296.58, 2320.96],
          [2309.16, 2286.6, 2264.83, 2333.29],
          [2282.17, 2263.97, 2253.25, 2286.33],
          [2255.77, 2270.28, 2253.31, 2276.22],
          ]


          k=(
          Kline
          .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
          .add_yaxis("k線圖", data)
          .set_global_opts(
          yaxis_opts=opts.AxisOpts(is_scale=True),
          xaxis_opts=opts.AxisOpts(is_scale=True),
          title_opts=opts.TitleOpts(title="K線圖-基本示例"),
          )

          )
          k.render_notebook

          6.5 地圖Map

          from pyecharts import options as opts
          from pyecharts.charts import Map
          from pyecharts.faker import Faker

          map=(
          Map
          .add("中國(guó)地圖", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
          .set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
          )
          map.render_notebook

          6.6 詞云圖

          import pyecharts.options as opts
          from pyecharts.charts import WordCloud


          data=[
          ("生活資源", "999"),
          ("供熱管理", "888"),
          ("供氣質(zhì)量", "777"),
          ("生活用水管理", "688"),
          ("一次供水問題", "588"),
          ("交通運(yùn)輸", "516"),
          ("城市交通", "515"),
          ("環(huán)境保護(hù)", "483"),
          ("房地產(chǎn)管理", "462"),
          ("城鄉(xiāng)建設(shè)", "449"),
          ("社會(huì)保障與福利", "429"),
          ("社會(huì)保障", "407"),
          ("文體與教育管理", "406"),
          ("公共安全", "406"),
          ("公交運(yùn)輸管理", "386"),
          ("出租車運(yùn)營(yíng)管理", "385"),
          ("供熱管理", "375"),
          ("市容環(huán)衛(wèi)", "355"),
          ("自然資源管理", "355"),
          ("粉塵污染", "335"),
          ("噪聲污染", "324"),
          ("土地資源管理", "304"),
          ("物業(yè)服務(wù)與管理", "304"),
          ("醫(yī)療衛(wèi)生", "284"),
          ("粉煤灰污染", "284"),
          ("占道", "284"),
          ("供熱發(fā)展", "254"),
          ("農(nóng)村土地規(guī)劃管理", "254"),
          ("生活噪音", "253"),
          ("供熱單位影響", "253"),
          ("城市供電", "223"),
          ("房屋質(zhì)量與安全", "223"),
          ("大氣污染", "223"),
          ("房屋安全", "223"),
          ("文化活動(dòng)", "223"),
          ("拆遷管理", "223"),
          ("公共設(shè)施", "223"),
          ("供氣質(zhì)量", "223"),
          ("供電管理", "223"),
          ("燃?xì)夤芾?, "152"),
          ("教育管理", "152"),
          ("醫(yī)療糾紛", "152"),
          ("執(zhí)法監(jiān)督", "152"),
          ("設(shè)備安全", "152"),
          ("政務(wù)建設(shè)", "152"),
          ("縣區(qū)、開發(fā)區(qū)", "152"),
          ("宏觀經(jīng)濟(jì)", "152"),
          ("教育管理", "112"),
          ("社會(huì)保障", "112"),
          ("生活用水管理", "112"),
          ("物業(yè)服務(wù)與管理", "112"),
          ("分類列表", "112"),
          ("農(nóng)業(yè)生產(chǎn)", "112"),
          ("二次供水問題", "112"),
          ("城市公共設(shè)施", "92"),
          ("拆遷政策咨詢", "92"),
          ("物業(yè)服務(wù)", "92"),
          ("物業(yè)管理", "92"),
          ("社會(huì)保障保險(xiǎn)管理", "92"),
          ("低保管理", "92"),
          ("文娛市場(chǎng)管理", "72"),
          ("城市交通秩序管理", "72"),
          ("執(zhí)法爭(zhēng)議", "72"),
          ("商業(yè)煙塵污染", "72"),
          ("占道堆放", "71"),
          ("地上設(shè)施", "71"),
          ("水質(zhì)", "71"),
          ("無(wú)水", "71"),
          ("供熱單位影響", "71"),
          ("人行道管理", "71"),
          ("主網(wǎng)原因", "71"),
          ("集中供熱", "71"),
          ("客運(yùn)管理", "71"),
          ("國(guó)有公交(大巴)管理", "71"),
          ("工業(yè)粉塵污染", "71"),
          ("治安案件", "71"),
          ("壓力容器安全", "71"),
          ("身份證管理", "71"),
          ("群眾健身", "41"),
          ("工業(yè)排放污染", "41"),
          ("破壞森林資源", "41"),
          ("市場(chǎng)收費(fèi)", "41"),
          ("生產(chǎn)資金", "41"),
          ("生產(chǎn)噪聲", "41"),
          ("農(nóng)村低保", "41"),
          ("勞動(dòng)爭(zhēng)議", "41"),
          ("勞動(dòng)合同爭(zhēng)議", "41"),
          ("勞動(dòng)報(bào)酬與福利", "41"),
          ("醫(yī)療事故", "21"),
          ("停供", "21"),
          ("基礎(chǔ)教育", "21"),
          ("職業(yè)教育", "21"),
          ("物業(yè)資質(zhì)管理", "21"),
          ("拆遷補(bǔ)償", "21"),
          ("設(shè)施維護(hù)", "21"),
          ("市場(chǎng)外溢", "11"),
          ("占道經(jīng)營(yíng)", "11"),
          ("樹木管理", "11"),
          ("農(nóng)村基礎(chǔ)設(shè)施", "11"),
          ("無(wú)水", "11"),
          ("供氣質(zhì)量", "11"),
          ("停氣", "11"),
          ("燃?xì)夤芾?, "11"),
          ("市容環(huán)衛(wèi)", "11"),
          ("新聞傳媒", "11"),
          ("人才招聘", "11"),
          ("市場(chǎng)環(huán)境", "11"),
          ("行政事業(yè)收費(fèi)", "11"),
          ("食品安全與衛(wèi)生", "11"),
          ("城市交通", "11"),
          ("房地產(chǎn)開發(fā)", "11"),
          ("房屋配套問題", "11"),
          ("物業(yè)服務(wù)", "11"),
          ("物業(yè)管理", "11"),
          ("占道", "11"),
          ("園林綠化", "11"),
          ("戶籍管理及身份證", "11"),
          ("公交運(yùn)輸管理", "11"),
          ("公路(水路)交通", "11"),
          ("房屋與圖紙不符", "11"),
          ("有線電視", "11"),
          ("社會(huì)治安", "11"),
          ("林業(yè)資源", "11"),
          ("其他行政事業(yè)收費(fèi)", "11"),
          ("經(jīng)營(yíng)性收費(fèi)", "11"),
          ("食品安全與衛(wèi)生", "11"),
          ("體育活動(dòng)", "11"),
          ("有線電視安裝及調(diào)試維護(hù)", "11"),
          ("低保管理", "11"),
          ("勞動(dòng)爭(zhēng)議", "11"),
          ("社會(huì)福利及事務(wù)", "11"),
          ("一次供水問題", "11"),
          ]


          c=(
          WordCloud
          .add(series_name="熱點(diǎn)分析", data_pair=data, word_size_range=[6, 66])
          .set_global_opts(
          title_opts=opts.TitleOpts(
          title="熱點(diǎn)分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
          ),
          tooltip_opts=opts.TooltipOpts(is_show=True),
          )

          )
          c.render_notebook

          上述示例僅供參考,讀者們結(jié)合日常工作應(yīng)用,學(xué)會(huì)舉一反三才是關(guān)健,更多Pychart示例介紹可見:代碼示例


          主站蜘蛛池模板: 中文字幕乱码亚洲精品一区| 国产高清一区二区三区四区| 日韩一区二区三区在线精品| 久久精品一区二区国产| 国产精品一区视频| 一区二区三区国产| 熟妇人妻一区二区三区四区| 国产精品日韩欧美一区二区三区 | 无码精品一区二区三区免费视频| 国产suv精品一区二区6| 福利一区二区三区视频午夜观看| 国产丝袜美女一区二区三区| 无码日韩精品一区二区人妻 | 农村乱人伦一区二区| 国产亚洲情侣一区二区无码AV| 三级韩国一区久久二区综合| 无码一区二区三区亚洲人妻| 在线不卡一区二区三区日韩| 韩国女主播一区二区| 国产一区二区三区无码免费| 免费高清av一区二区三区| 国内精品视频一区二区八戒| 无码人妻一区二区三区免费手机| 久久国产免费一区| 亚洲国产视频一区| 国产怡春院无码一区二区 | 国产一区二区精品尤物| 中文字幕一区在线播放| 狠狠综合久久AV一区二区三区 | 99国产精品欧美一区二区三区 | 精品一区二区三区3d动漫| 蜜臀AV免费一区二区三区| 国产凸凹视频一区二区| 无码精品尤物一区二区三区| 国产观看精品一区二区三区 | chinese国产一区二区| 一区二区三区免费在线视频| 国产一区二区视频在线播放| 亚洲AV综合色区无码一区爱AV| 亚洲国产成人久久综合一区| 亚洲精品无码一区二区|