整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          D3.js實現網紅N年數據變化柱狀圖,厲害了,我的國

          D3.js實現網紅N年數據變化柱狀圖,厲害了,我的國

          據變化柱狀圖

          大家看到這個圖有沒有熟悉感,頭條視頻有時候推薦這樣的視頻,有沒有想到這是怎么制作出來的了,對,這就是技術大神Jannchie的作品,使用的是D3.js,然后再加上錄屏工具就可以看到了(百度echarts版本明天出)。

          一.技術點

          1.需要準備好數據

          類似這樣就行,數據庫也行

          2.將數據放在visual.js中就可以了。(項目文件在下面下載哦)

          二、解析

          1.這其實是用D3畫的柱狀圖,有興趣的朋友可以了解一下。

          2.作者在js中添加了眾多注釋,讓你只需要填寫數據就行,前端頁面不需要擔心。

          3.原項目支持上傳數據,我直接寫好了可以需要使用。

          三、地址

          • 引言
          • 一.Pyecharts的基本用法
            • 1.語法結構
          • 二.繪制4個pyecharts圖形
            • 1.需要注意的問題
            • 2.繪制散點圖
            • 3.繪制餅圖
            • 4.雷達圖
            • 5. 柱形圖代碼展示
          • 三.制作大屏標題
            • 1.代碼解釋
            • 2.使用pyecharts庫創建Page對象
            • 3.使用Python的BeautifulSoup庫來讀取和修改一個HTML文件
          • 大總結

          引言

          pyecharts 是一個用于生成 ECharts 圖表的類庫,可以方便地在 Python 中進行數據可視化。ECharts 是一種使用 JavaScript 實現的,功能豐富的圖表庫。通過 pyecharts,我們可以在 Python 中創建各種類型的圖表,包括折線圖、柱狀圖、餅圖、散點圖等。使用pyecharts進行可視化大屏的優點有很多,比如:

          豐富的圖表類型:pyecharts支持多種類型的圖表,可以滿足不同的數據可視化需求。

          高效的性能:pyecharts的性能非常好,可以快速生成大量的圖表。

          易用性:pyecharts的API設計簡潔易用,可以快速上手。

          可擴展性:pyecharts支持自定義主題和與其他Python庫的集成,方便用戶擴展功能。

          一.Pyecharts的基本用法

          1.語法結構

          Pyecharts的語法結構包括以下部分:

          • 圖表類型:Pyecharts支持多種圖表類型,如柱狀圖、折線圖、餅圖、散點圖等。每種圖表類型都有自己的方法和屬性,用于設置圖表的外觀和數據。
          • 數據:Pyecharts圖表的數據以列表形式給出,每個列表代表一個系列的數據。每個系列可以包含多個數據點,每個數據點包含x軸和y軸的值。
          • 配置項:Pyecharts圖表支持多種配置項,如標題、圖例、提示框、工具欄等。這些配置項可以用于設置圖表的外觀和交互方式。
          • 方法鏈:Pyecharts圖表的方法可以鏈式調用,例如add_xaxis().add_yaxis()。這種鏈式調用方式使得代碼更加簡潔和易讀。

          總之,Pyecharts的語法結構基于ECharts的語法結構,通過Python類庫的方式實現。使用Pyecharts可以方便地在Python中創建各種類型的圖表,并對其進行配置和定制。

          二.繪制4個pyecharts圖形

          pyecharts是一個基于Python語言的數據可視化庫,可以用來創建各種類型的圖形,如折線圖、柱狀圖、散點圖、餅圖、地圖等。它基于Echarts庫,通過Python語言提供了更簡單、更便捷的方式來創建圖形,無需編寫復雜的JavaScript代碼。使用pyecharts,用戶可以通過簡單的Python代碼來定義圖形的數據、樣式、布局等,然后生成HTML文件,從而實現圖形的展示和交互。通過pyecharts,用戶可以在Python環境下靈活、高效地進行數據可視化工作。

          1.需要注意的問題

          (1).繪制pyecharts圖形需要導入庫的相關類和函數:在Python文件中導入pyecharts庫的相關類和函數:

          import pandas as pd
          from pyecharts.charts import Scatter
          from pyecharts import options as opts

          (2).安裝pyecharts庫:通過pip安裝pyecharts庫,可以使用以下命令進行安裝:

          pip install pyecharts

          2.繪制散點圖

          1.安裝pyecharts庫,導入必要的包:

          # 繪制一個散點圖
          import pandas as pd
          from pyecharts.charts import Scatter
          from pyecharts import options as opts

          2.導入使用的數據集并準備需要的數據并繪制散點圖

          scatter=(
              Scatter()
              .add_xaxis(xaxis_data=x)
              .add_yaxis(
                  '',
                  y_axis=y,
                  symbol_size=12,
                  label_opts=opts.LabelOpts(is_show=False)
              )
              .set_global_opts(
                  xaxis_opts=opts.AxisOpts(
                      type_='value',
                  ),
                  yaxis_opts=opts.AxisOpts(
                      type_='value',
                  )
              )
              )
          scatter.render_notebook()
          #scatter.render('散點圖.html')
          
          以下是這段代碼的逐行解釋:
          scatter=(:開始定義一個名為scatter的變量,該變量將存儲生成的散點圖。
          Scatter():創建一個新的Scatter對象,這是生成散點圖的基礎。
          .add_xaxis(xaxis_data=x):為散點圖添加x軸的數據。其中,x是一個包含x軸數據的列表或數組。
          .add_yaxis('', y_axis=y, symbol_size=12, label_opts=opts.LabelOpts(is_show=False)):
          
          '':y軸的名稱(這里為空字符串,表示不顯示名稱)。
          y_axis=y:為散點圖添加y軸的數據。其中,y是一個包含y軸數據的列表或數組。
          symbol_size=12:設置散點的大小為12。
          label_opts=opts.LabelOpts(is_show=False):設置標簽的選項,這里設置為不顯示標簽。
          .set_global_opts(:設置全局的配置選項。
          
          xaxis_opts=opts.AxisOpts(type_='value',):設置x軸的類型為數值型。
          yaxis_opts=opts.AxisOpts(type_='value',):設置y軸的類型為數值型。
          ):結束.set_global_opts()方法的調用。
          
          ): 結束Scatter()對象的創建。
          
          scatter.render_notebook():在Jupyter Notebook中渲染這個散點圖。如果在一個Jupyter環境中運行這段代碼,能看到一個在Notebook中顯示的散點圖。
          
          scatter.render('散點圖.html'):這是一個注釋行,可以使用scatter.render('散點圖.html')將散點圖渲染到一個名為"散點圖.html"的HTML文件中。

          以下是在jupyter中運行上面的代碼所得到的散點圖:

          3.繪制餅圖

          根據以上繪制散點圖的具體描述,我們現在來繪制一個餅圖,繪制過程不明白的可以參考上面散點圖的詳細描述!

          (1)導入數據包與所使用的數據文件

          (2)這一段代碼使用了數據分箱 (數據分桶)和分組統計

          • 使用pd.cut方法將df['年齡']的數據分為四個年齡段:少年、青年、中年和老年。
          • 2. 分箱的邊界是:0, 20, 40, 60, 100。
          • 每個年齡段用相應的標簽標識。
          • 使用df.groupby('年齡段').size()對分箱后的數據進行分組統計,得到每個年齡段的人數。
          # 數據分箱
          df['年齡段']=pd.cut(
              df['年齡'],
              bins=[0,20,40,60,100],
              labels=['少年','青年','中年','老年']
          )
          # 分組統計
          result=df.groupby('年齡段').size()
          #數據準備
          data=[[x,int(y)] for x,y in zip(result.index,result.values)]
          pie=(
              Pie()
              .add(
                  '',#數據的系列名稱,如果只有一個系列的數據,填空字符
                  data,
                  radius=['30%','75%'], #橫向 左右
                  center=['25%','50%'],   #上下
                  rosetype='radius'
              )
          )
          pie.render_notebook()

          以下是圖形運行展示:

          4.雷達圖

          (1)繪制雷達圖步驟:1.導入數據-2.定義數據標簽-3.設置全局配置項-4.添加數據標簽-5.設置圖例和標題-6.最后打印圖表

          (2)創建雷達圖并設置全局配置項:

          • radar=Radar():創建一個新的雷達圖對象。
          • radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))]):為雷達圖添加指標和最大值。這里使用了一個列表推導式來為每個指標設置名稱和最大值。

          (3) 添加數據和標簽:

          • 使用一個循環來遍歷數據和標簽,并使用radar.add()方法將數據添加到雷達圖中。
          • labels[i]是當前循環的指標名稱。
          • [x[i], y[i]]是當前指標的數據。
          • color="pink"設置線條顏色為粉紅色。
          • linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9)設置線條樣式,包括寬度和透明度。
          #  雷達圖
          from pyecharts import options as opts  
          from pyecharts.charts import Radar  
            
          # 定義數據和標簽  
          x=[[3, 6, 7, 8, 5, 9]]  
          y=[[6, 8, 2, 7, 3, 5]]  
          labels=['年齡', '群眾', '團員', '女生', '男生', '老師']  
            
          # 創建雷達圖并設置全局配置項  
          radar=Radar()  
          radar.add_schema(schema=[opts.RadarIndicatorItem(name=labels[i], max_=20) for i in range(len(labels))])  
            
          # 添加數據和標簽  
          for i in range(len(x)):  
              radar.add(labels[i], [x[i], y[i]], color="pink", linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9))  
            
          # 設置圖例和標題  
          radar.set_global_opts(legend_opts=opts.LegendOpts(pos_left="center", pos_top="top"), title_opts=opts.TitleOpts(title="Radar Chart"))  
            
          # 渲染圖表  
          #radar.render("雷達圖.html")
          radar.render_notebook()

          圖片展示:

          5. 柱形圖代碼展示

          (1)導入數據包,從Excel文件中讀取數據,然后按照“工作地所在省份”進行分組并統計每個省份的會員卡號數量。最后,對結果進行降序排序并取前30名。

          (2)進行數據準備:將result的索引轉化為列表并賦值給x,然后將索引和值都轉化為列表并分別賦值給y1y2

          (3).reversal_axis()是用來實現柱形圖的,即從大到小的順序顯示。最后,設置全局配置項,包括標題、標題鏈接和標題文本樣式。

          #繪制柱形圖
          from pyecharts.charts import Bar
          df1=pd.read_excel('數據集/航空公司數據.xlsx')
          result=df1.groupby('工作地所在省份')['會員卡號'].count().sort_values(ascending=False)[:30]
          #數據準備
          x=result.index.tolist()
          y1=result.index.tolist()
          y2=result.values.tolist()
          #畫圖
          y=(
              Bar( ) #init_opts=opts.InitOpts(width='600px',height='400px')
              .add_xaxis(x)
              .add_yaxis('人數',y1,stack=100) #stack 表示堆積效果,兩個stack參數值要相等
              .add_yaxis('省份',y2,stack=100)
              .reversal_axis() #實現條形圖效果
              .set_global_opts(
                 title_opts=opts.TitleOpts(
                 title="各省份用戶人數柱形圖(前30名)",
                 title_link='https://www.baidu.com', #標題鏈接
                 title_textstyle_opts=opts.TextStyleOpts( #文字樣本配置項
                     color='red',
                     font_size=20,
                  
                     )
                 )
              )
          )
          y.render_notebook()

          以下是展示結果圖片:

          三.制作大屏標題

          1.代碼解釋

          1.這段代碼是使用pyecharts庫來創建一個標題為“大屏標題”的餅圖,并設置了一些全局選項。

          2.使用datetime.now()獲取當前時間,然后使用strftime('%Y-%m-%d')格式化為'年-月-日'的格式,并賦值給now_time變量。

          3.使用render_notebook()方法將圖表渲染到Jupyter Notebook中。這樣,當在Jupyter環境中運行這段代碼時,我們會看到一個顯示“大屏標題”和“截至:當前時間”的空白區域,這是構成大屏的標題部分。

          from pyecharts.charts import Pie
          from datetime import datetime
          now_time=datetime.now().strftime('%Y-%m-%d') # 獲取當前時間
          big_title=(
              Pie() # 不畫圖,只顯示一個標題,用來構成大屏的標題
                  .set_global_opts(
                  title_opts=opts.TitleOpts(title="大屏標題",
                                            title_textstyle_opts=opts.TextStyleOpts(font_size=40,
          #                                                                           color='#FFFFFF',
                                                                                   ),
                                            subtitle=f'截至:{now_time}',
                                            pos_top=10
                                           )
                  )
          )
          big_title.render_notebook()

          1.圖表結果展示

          2.使用pyecharts庫創建Page對象

          使用pyecharts庫來創建一個Page對象,該對象可以用來組合多個圖表并展示在一個頁面上。

          (1)添加圖表到Page對象:使用add方法將多個圖表添加到Page對象中。這些圖表可以是上面已經創建好的,如big_title, scatter, pie, radar, 和 y 這樣,這些圖表將會被組合到一個頁面上展示啦。

          from pyecharts.charts import Page
          page=Page() # 創建Page對象
          
          page.add(  # 添加圖表到Page對象
              big_title,
              scatter,
              pie,
              radar,
              y
              
          )
          # page.render_notebook()
          page.render('tp.html') # 渲染Page對象到HTML文件
          在html中可以調整各個圖形的位置和大小,按“Save Config”鍵保存配置chart_config.json(有的電腦不成功)。

          在運行這個代碼后可能會出現 no test named ' false ' 的報錯:


          解決方法有兩種:在anac

          3.使用Python的BeautifulSoup庫來讀取和修改一個HTML文件

          bs4模塊導入BeautifulSoup類,這是一個用于解析HTML和XML文檔的庫。

          from bs4 import BeautifulSoup

          with open語句打開名為"tp.html"的文件,并設置模式為"r+"(讀寫模式),同時指定編碼為'utf-8',使用BeautifulSoup類解析HTML文件內容,并將解析后的對象賦值給html_bf

          with open("tp.html", "r+", encoding='utf-8') as html:
              html_bf=BeautifulSoup(html, 'lxml')
          • 使用BeautifulSoup的select方法來選擇所有帶有類名"chart-container"的<div>標簽。這些標簽被存儲在divs變量中。
          • 下面的五行代碼都是為divs列表中的每個元素(即每個帶有"chart-container"類的<div>標簽)設置樣式屬性。
              divs=html_bf.select('.chart-container') # 根據css定位標簽,選中圖像的父節點標簽
              
              divs[0]["style"]="width:50%;height:99px;position:absolute;top:0px;left:10%;border-style:dashed;border-color:#000000;border-width:0px;"
              divs[1]["style"]="width:350px;height:270px;position:absolute;top:50px;left:30px;border-style:solid;border-color:#88888;border-width:2px;"
              divs[2]["style"]="width:350px;height:270px;position:absolute;top:50px;left:390px;border-style:solid;border-color:#66666;border-width:2px;"
              divs[3]["style"]="width:350px;height:260px;position:absolute;top:350px;left:30px;border-style:solid;border-color:#444444;border-width:2px;"
              divs[4]["style"]="width:350px;height:260px;position:absolute;top:350px;left:390px;border-style:solid;border-color:#444444;border-width:2px;"
          
              body=html_bf.find("body") # 根據標簽名稱定位到body標簽
              body["style"]="background-color:p;" # 修改背景顏色
              html_new=str(html_bf) # 將BeautifulSoup對象轉換為字符
              html.seek(0, 0) # 光標移動至
              html.truncate() # 刪除光標后的所有字符內容
              html.write(html_new) # 將由BeautifulSoup對象轉換得到的字符重新寫入html文件
              html.close()

          以上代碼的運行結果展示如圖:

          總結:這段代碼的主要目的是讀取一個HTML文件,并使用BeautifulSoup庫修改其中特定元素的樣式,然后重新寫入修改后的內容

          大總結

          使用pyecharts進行數據可視化是一種非常有效的方式,它能夠將復雜的數據轉化為直觀的圖表,幫助我們更好地理解和分析數據。這是我對pyecharts進行數據可視化的一些心得體會和總結:簡潔易用:pyecharts的API設計非常簡潔,使用起來非常方便。交互性強:pyecharts支持圖表之間的交互,比如可以通過鼠標懸停在某個數據點上,顯示更多的信息。可擴展性強:pyecharts支持自定義主題,我們可以根據需要調整圖表的樣式。同時,它也支持與其他Python庫的集成,比如使用pandas進行數據處理,使用matplotlib進行數據預處理等。

          在使用pyecharts進行數據可視化的過程中,我也遇到了一些問題。比如,對于一些復雜的圖表類型,可能需要花費更多的時間來學習和理解。另外,雖然pyecharts的性能很好,但是如果需要生成大量的圖表或者需要實時渲染的場景,可能需要考慮其他的解決方案。

          總的來說,使用pyecharts進行數據可視化是一種非常有效的方式。它簡潔易用,交互性強,可擴展性強,性能良好,社區活躍。在未來的工作中,我會繼續使用pyecharts進行數據可視化,也會向社區貢獻自己的力量。

          到此這篇關于在Python中使用pyecharts圖形畫可視化大屏的文章就介紹到這了。

          #IT#

          .什么是pyecharts?

          Pyecharts是一個將Echarts與Python結合的數據可視化庫。而Echarts本身是由百度開源的一個基于JavaScript的數據可視化庫,它以良好的交互性和精巧的圖表設計而受到開發者的認可。Python是一門非常適合數據處理的編程語言,具有強大的表達力和豐富的數據處理工具。

          Pyecharts就是這兩者的結合,它允許Python開發者利用Echarts的強大功能來創建各種數據可視化圖表。使用pyecharts可以生成獨立的網頁文件,也可以集成到Web框架如Flask或Django中使用。

          在pyecharts中,一切的配置都是通過Options來實現的。這意味著用戶可以通過配置不同的選項來定制化自己的圖表,從而創造出更加豐富和符合需求的可視化效果。

          2.pyecharts的特性

          首先,簡潔的API設計是Pyecharts的一個顯著特點。它提供了簡單直觀的接口,使得用戶能夠輕松地創建復雜的圖表。這種設計哲學不僅降低了學習成本,還提高了開發效率,支持鏈式調用,讓代碼更加流暢易讀。

          其次,豐富的圖表類型也是Pyecharts的一大特色。它包含了30多種常見的圖表類型,如折線圖、柱狀圖、餅圖等,幾乎涵蓋了所有主流的數據可視化需求。

          再者,對Web框架的良好集成是Pyecharts的另一個優勢。它可以無縫集成到Flask、Django等主流的Web框架中,這使得在Web應用中集成數據可視化變得非常方便。

          此外,原生百度地圖的支持為地理數據可視化提供了極大的便利。用戶可以輕松地在地圖上繪制各種地理信息,這對于需要展示地理位置數據的應用場景非常有用。

          最后,Pyecharts支持主流的Notebook環境,包括Jupyter Notebook和JupyterLab,這使得數據分析和可視化可以在同一個環境中進行,極大地提高了工作效率。

          3.進行簡單的數據分析

          3.1 準備一些假數據

          3.2 安裝pandas、pyecharts庫

          安裝命令

          pip install pandas
          pip install pyecharts


          查看已安裝版本:

          import pyecharts 
          print(pyecharts.__version__)

          3.3 柱狀圖分析部門人數

          import pandas as pd
          from pyecharts.charts import Bar, Pie
          from pyecharts import options as opts
          
          # 讀取Excel文件
          file_path='企業員工信息表.xlsx'
          df=pd.read_excel(file_path)
          
          # 統計各部門人數
          department_count=df['部門'].value_counts()
          
          # 繪制柱狀圖
          bar=(
              Bar()
              .add_xaxis(department_count.index.tolist())
              .add_yaxis("人數", department_count.values.tolist())
              .set_global_opts(title_opts=opts.TitleOpts(title="各部門人數統計"))
          )
          
          # 生成HTML文件
          bar.render('A06-各部門人數統計.html')

          結果展示:


          主站蜘蛛池模板: 精品国产一区二区三区| 成人区人妻精品一区二区三区 | 成人日韩熟女高清视频一区| 久草新视频一区二区三区| 天天综合色一区二区三区| 岛国无码av不卡一区二区| 日韩中文字幕一区| 免费观看一区二区三区| 视频一区二区在线观看| 亚洲爆乳精品无码一区二区| 色欲精品国产一区二区三区AV| 无码精品人妻一区二区三区免费 | 国产精品一区二区无线| 免费精品一区二区三区在线观看| 亚洲一区二区三区在线| 亚洲日本va午夜中文字幕一区| 亚洲一区二区三区在线视频| 亚洲av区一区二区三| 久久婷婷色综合一区二区| 国产精品亚洲综合一区| 久久精品无码一区二区三区日韩| 成人国产精品一区二区网站公司| 色狠狠色狠狠综合一区| 国产一区二区在线|播放| 精品在线一区二区| 国产综合精品一区二区三区| 日韩一区二区久久久久久| 亚洲福利电影一区二区?| 亚洲精品精华液一区二区| 国产成人一区二区三区免费视频| 欧洲精品码一区二区三区免费看| 国产精品一区二区四区| 无码精品国产一区二区三区免费| 国模无码一区二区三区| 精品不卡一区中文字幕 | 久久一区二区三区99| 激情无码亚洲一区二区三区| 狠狠色婷婷久久一区二区| 国模私拍一区二区三区| 国产色欲AV一区二区三区| 国产综合无码一区二区三区|