1. 程式人生 > 其它 >python視覺化大屏-疫情監控圖(4)詞雲、標題、大屏

python視覺化大屏-疫情監控圖(4)詞雲、標題、大屏

最終結果

詞雲

資料準備

匯入的庫

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType
from pyecharts.charts import Map
import pandas as pd
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType

from pyecharts.charts import
Map,Page

程式碼

import pandas as pd
import jieba
from snownlp import SnowNLP
import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = pd.read_excel(r'在一起 短評1.xlsx')
data['詞性標註'] = data['評論'].agg(lambda x:list(SnowNLP(x).tags))
# 把詞性一列中所有列表的資料對拼接到一個列表中,方便後續分析
list_tags = []
for
i in data['詞性標註']: for j in i: list_tags.append(j) list_tags data_tags = pd.DataFrame(list_tags,columns=['詞語','詞性']) result = data_tags[data_tags['詞性']=='n'].groupby(by='詞語')['詞語'].count().sort_values(ascending=False)#[:20] data_wordcloud_tags = [(i,str(j)) for i,j in zip(result.index,result.values)]
from pyecharts.globals import SymbolType c3 = ( WordCloud(init_opts=opts.InitOpts(width='500px',height='400px',theme=ThemeType.DARK)) .add(series_name="", data_pair=data_wordcloud_tags, word_size_range=[20, 100], shape=SymbolType.DIAMOND, textstyle_opts=opts.TextStyleOpts, ) .set_global_opts( title_opts=opts.TitleOpts( title="“在一起”評論詞雲", title_textstyle_opts=opts.TextStyleOpts(font_size=23) ), tooltip_opts=opts.TooltipOpts(is_show=True), ) ) c3.render_notebook()

執行結果

標題設定

from pyecharts.charts import Pie
title = (
    Pie(init_opts=opts.InitOpts(width="600px", height="100px",theme=ThemeType.DARK))# 不畫圖,只顯示一個標題,用來構成大屏的標題
#        theme=ThemeType.CHALK
    .set_global_opts(
        title_opts=opts.TitleOpts(title="新冠疫情資料視覺化大屏",
                                  title_textstyle_opts=opts.TextStyleOpts(font_size=30,
#                                                                           color='#FFFFFF',
                                                                         ),
                                  pos_top=10
                                 )
        )
)
title.render_notebook()

執行結果

點選本作者的頭像,進入到主頁,整合本部落格釋出的(python視覺化大屏-疫情監控圖(1),python視覺化大屏-疫情監控圖(2),python視覺化大屏-疫情監控圖(3),

python視覺化大屏-疫情監控圖(4))的程式碼圖片,整合成一個html檔案。

from pyecharts.charts import Page

page = Page()
page.add(
    title,
    bar2, 
    c,
    map,
    pie,
    c2,
    bar,
    c3,
    
    
   
)
# page.render_notebook()
page.render('資料大屏.html') 

執行結果

根據結果路徑查詢點選開啟相應的HTML檔案

根據css定位標籤,選中影象的父節點標籤,修改圖片的大小和位置

排布圖片的位置

from bs4 import BeautifulSoup
with open("資料大屏.html", "r+", encoding='utf-8') as html:
    html_bf = BeautifulSoup(html, 'lxml')
#     html_bf.boy["style"]="background-color: #293441;"
    divs = html_bf.select('.chart-container') # 根據css定位標籤,選中影象的父節點標籤
    divs[0]["style"] = "width:700px;height:100px;position:absolute;top:10px;left:100px;border-style:dashed;border-color:#444444;border-width:0px;"
    divs[1]["style"] = "width:450px;height:500px;position:absolute;top:100px;left:30px;border-style:dashed;border-color:#444444;border-width:2px;"
    
    divs[2]["style"] = "width:600px;height:350px;position:absolute;top:100px;left:490px;border-style:dashed;border-color:#444444;border-width:2px;"
    divs[3]["style"] = "width:600px;height:350px;position:absolute;top:450px;left:490px;border-style:dashed;border-color:#444444;border-width:2px;"
    
    divs[4]["style"] = "width:450px;height:350px;position:absolute;top:100px;left:1100px;border-style:dashed;border-color:#444444;border-width:2px;"
    divs[5]["style"] = "width:450px;height:470px;position:absolute;top:580px;left:30px;border-style:dashed;border-color:#444444;border-width:2px;"
    divs[6]["style"] = "width:450px;height:350px;position:absolute;top:450px;left:1100px;border-style:dashed;border-color:#444444;border-width:2px;"
    divs[7]["style"] = "width:1055px;height:230px;position:absolute;top:810px;left:490px;border-style:dashed;border-color:#444444;border-width:2px;"
    
    body = html_bf.find("body") # 根據標籤名稱定位到body標籤
    body["style"] = "background-color:#333333;" # 修改背景顏色
    html_new = str(html_bf) # 將BeautifulSoup物件轉換為字元
    html.seek(0, 0) # 游標移動至
    html.truncate() # 刪除游標後的所有字元內容
    html.write(html_new) # 將由BeautifulSoup物件轉換得到的字元重新寫入html檔案
    html.close()

再次重新整理HTML檔案就會顯示出最終結果