<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pip install pyecharts
新增主題風格使用的是 InitOpts() 方法,
該方法的主要引數有:
引數 | 描述 |
---|---|
width | 畫布寬度,要求字串格式,如 width=“500px” |
height | 畫布高度,要求字串格式,如 width=“500px” |
chart_id | 圖表ID,作為圖表的唯一標識。有多個圖表時用來區分不同的圖表 |
page_title | 網頁標題,字串格式 |
theme | 圖表主題。由ThemeType模組提供 |
bg_color | 圖表背景顏色,字串格式 |
可以選擇的風格有:
給圖表新增標題需要通過 set_global_options()方法 的 title_opts引數,
該引數的值通過opts模組的TitleOpts()方法生成,
且TitleOpts()方法主要引數語法如下:
設定圖例需要通過 set_global_opts()方法的 legend_opts引數,
該引數的引數值參考options模組的LegendOpts()方法。
LegendOpts() 方法的主要引數如下:
設定提示框主要是通過 set_global_opts()方法中的 tooltip_opts引數進行設定,
該引數的引數值參考options模組的TooltipOpts()方法。
TooltipOpts()方法的主要引數如下:
視覺對映通過 set_global_opts()方法中的 visualmap_opts引數進行設定,
該引數的取值參考options模組的VisualMapOpts()方法。
其主要引數如下:
工具箱通過 set_global_opts()方法中的 toolbox_opts引數進行設定,
該引數的取值參考options模組的ToolboxOpts()方法。
其主要引數如下:
區域縮放通過 set_global_opts()方法中的 datazoom_opts引數進行設定,
該引數的取值參考options模組的DataZoomOpts()方法。
其主要引數如下:
繪製柱狀圖通過Bar模組來實現,
該模組的主要方法有:
主要方法 | 描述 |
---|---|
add_xaxis() | x軸資料 |
add_yaxis() | y軸資料 |
reversal_axis() | 翻轉x、y軸資料 |
add_dataset() | 原始資料 |
下邊展示一個簡單的範例,先不使用過多複雜的樣式:
import numpy as np from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType # 生成資料 years = [2011, 2012, 2013, 2014, 2015] y1 = [1, 3, 5, 7, 9] y2 = [2, 4, 6, 4, 2] y3 = [9, 7, 5, 3, 1] y4 = list(np.random.randint(1, 10, 10)) bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) # 為柱狀圖新增x軸和y軸資料 bar.add_xaxis(years) bar.add_yaxis('A型', y1) bar.add_yaxis('B型', y2) bar.add_yaxis('C型', y3) bar.add_yaxis('D型', y4) # 渲染圖表到HTML檔案,並儲存在當前目錄下 bar.render("bar.html")
生成影象效果如下:
這裡有一個無法解釋的細節,就是可以看到y4資料,即D型,在影象中沒有顯示出來。經過小啾的反覆嘗試,發現凡是使用亂數產生的資料再轉化成列表,這部分亂數不會被寫入到html檔案中:
既然不會解釋,那就避免。
Line模組的主要方法有add_xaxis() 和 add_yaxis(),分別用來新增x軸資料和y軸資料。
add_yaxis()的主要引數如下:
繪製折線圖時,x軸的資料必須是字串,圖線方可正常顯示。
from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType # 準備資料 x = [2011, 2012, 2013, 2014, 2015] x_data = [str(i) for i in x] y1 = [1, 3, 2, 5, 8] y2 = [2, 6, 5, 6, 7] y3 = [5, 7, 4, 3, 1] line = Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) line.add_xaxis(xaxis_data=x_data) line.add_yaxis(series_name="A類", y_axis=y1) line.add_yaxis(series_name="B類", y_axis=y2) line.add_yaxis(series_name="C類", y_axis=y3) line.render("line.html")
生成影象效果如下:
繪製面積圖時需要在add_yaxis()方法中指定areastyle_opts引數。其值由options模組的AreaStyleOpts()方法提供。
from pyecharts.charts import Line from pyecharts import options as opts from pyecharts.globals import ThemeType x = [2011, 2012, 2013, 2014, 2015] x_data = [str(i) for i in x] y1 = [2, 5, 6, 8, 9] y2 = [1, 4, 5, 4, 7] y3 = [1, 3, 4, 6, 6] line = Line(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) line.add_xaxis(xaxis_data=x_data) line.add_yaxis(series_name="A類", y_axis=y1, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.add_yaxis(series_name="B類", y_axis=y2, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.add_yaxis(series_name="C類", y_axis=y3, areastyle_opts=opts.AreaStyleOpts(opacity=1)) line.render("line2.html")
影象效果如下:
繪製餅形圖使用的是Pie模組,該模組中需要使用的主要方法是add()方法
該方法主要引數如下:
主要引數 | 描述 |
---|---|
series_name | 系列名稱。用於提示文字和圖例標籤。 |
data_pair | 資料項,格式為形如[(key1,value1),(key2,value2)] |
color | 系列標籤的顏色。 |
radius | 餅圖的半徑。預設設成百分比形式,預設是相對於容器的高和寬中較小的一方的一半 |
rosetype | 是否展開為南丁格爾玫瑰圖,可以取的值有radius貨area,radius表示通過磁區圓心角展現資料的大小,即預設的扇形圖;area表示所有磁區的圓心角的角度相同,通過半徑來展現資料大小 |
from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeType x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF'] y_data = [200, 200, 100, 400, 500, 600] # 將資料轉換為目標格式 data = [list(z) for z in zip(x_data, y_data)] # 資料排序 data.sort(key=lambda x: x[1]) pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)) pie.add( series_name="類別", # 序列名稱 data_pair=data, # 資料 ) pie.set_global_opts( # 餅形圖示題 title_opts=opts.TitleOpts( title="各類別數量分析", pos_left="center"), # 不顯示圖例 legend_opts=opts.LegendOpts(is_show=False), ) pie.set_series_opts( # 序列標籤 label_opts=opts.LabelOpts(), ) pie.render("pie.html")
影象效果如下:
from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeType x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III', 'JJJ', 'KKK', 'LLL', 'MMM', 'NNN', 'OOO'] y_data = [200, 100, 400, 50, 600, 300, 500, 700, 800, 900, 1000, 1100, 1200, 1300, 1500] # 將資料轉換為目標格式 data = [list(z) for z in zip(x_data, y_data)] # 資料排序 data.sort(key=lambda x: x[1]) # 建立餅形圖並設定畫布大小 pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.ROMANTIC, width='300px', height='400px')) # 為餅形圖新增資料 pie.add( series_name="類別", data_pair=data, radius=["8%", "160%"], # 內外半徑 center=["65%", "65%"], # 位置 rosetype='area', # 玫瑰圖,圓心角相同,按半徑大小繪製 color='auto' # 顏色自動漸變 ) pie.set_global_opts( # 不顯示圖例 legend_opts=opts.LegendOpts(is_show=False), # 視覺對映 visualmap_opts=opts.VisualMapOpts(is_show=False, min_=100, # 顏色條最小值 max_=450000, # 顏色條最大值 ) ) pie.set_series_opts( # 序列標籤 label_opts=opts.LabelOpts(position='inside', # 標籤位置 rotate=45, font_size=8) # 字型大小 ) pie.render("pie2.html")
影象效果如下:
繪製箱線圖使用的是Boxplot類。
這裡有一個細節,準備y軸資料y_data時需要在列表外再套一層列表,否則圖線不會被顯示。
繪製箱線圖使用的是Boxplot模組,
主要的方法有
add_xaxis()和add_yaxis()
from pyecharts.charts import Boxplot from pyecharts.globals import ThemeType from pyecharts import options as opts y_data = [[5, 20, 22, 21, 23, 26, 25, 24, 28, 26, 29, 30, 50, 61]] boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC)) boxplot.add_xaxis([""]) boxplot.add_yaxis('', y_axis=boxplot.prepare_data(y_data)) boxplot.render("boxplot.html")
影象效果如下:
繪製漣漪圖使用的是EffectScatter模組,程式碼範例如下:
from pyecharts.charts import EffectScatter from pyecharts import options as opts from pyecharts.globals import ThemeType x = [2011, 2012, 2013, 2014, 2015] x_data = [str(i) for i in x] y1 = [1, 3, 2, 5, 8] y2 = [2, 6, 5, 6, 7] y3 = [5, 7, 4, 3, 1] scatter = EffectScatter(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)) scatter.add_xaxis(x_data) scatter.add_yaxis("", y1) scatter.add_yaxis("", y2) scatter.add_yaxis("", y3) # 渲染圖表到HTML檔案,存放在程式所在目錄下 scatter.render("EffectScatter.html")
影象效果如下:
繪製詞雲圖使用的是WordCloud模組,
主要的方法有add()方法。
add()方法的主要引數如下:
add()方法主要的引數有
準備一個txt檔案(001.txt),文字內容以《蘭亭集序》為例:
永和九年,歲在癸丑,暮春之初,會於會稽山陰之蘭亭,修禊事也。群賢畢至,少長鹹集。此地有崇山峻嶺,茂林修竹,又有清流激湍,映帶左右,引以為流觴曲水,列坐其次。雖無絲竹管絃之盛,一觴一詠,亦足以暢敘幽情。
是日也,天朗氣清,惠風和暢。仰觀宇宙之大,俯察品類之盛,所以遊目騁懷,足以極視聽之娛,信可樂也。
夫人之相與,俯仰一世。或取諸懷抱,悟言一室之內;或因寄所託,放浪形骸之外。雖趣舍萬殊,靜躁不同,當其欣於所遇,暫得於己,快然自足,不知老之將至;及其所之既倦,情隨事遷,感慨系之矣。向之所欣,俯仰之間,已為陳跡,猶不能不以之興懷,況修短隨化,終期於盡!古人云:“死生亦大矣。”豈不痛哉!
每覽昔人興感之由,若合一契,未嘗不臨文嗟悼,不能喻之於懷。固知一死生為虛誕,齊彭殤為妄作。後之視今,亦猶今之視昔,悲夫!故列敘時人,錄其所述,雖世殊事異,所以興懷,其致一也。後之覽者,亦將有感於斯文。
程式碼範例如下:
from pyecharts.charts import WordCloud from jieba import analyse # 基於TextRank演演算法從文字中提取關鍵詞 textrank = analyse.textrank text = open('001.txt', 'r', encoding='UTF-8').read() keywords = textrank(text, topK=30) list1 = [] tup1 = () # 關鍵詞列表 for keyword, weight in textrank(text, topK=30, withWeight=True): # print('%s %s' % (keyword, weight)) tup1 = (keyword, weight) # 關鍵詞權重 list1.append(tup1) # 新增到列表中 # 繪製詞雲圖 mywordcloud = WordCloud() mywordcloud.add('', list1, word_size_range=[20, 100]) mywordcloud.render('wordclound.html')
詞雲圖效果如下:
繪製熱力圖使用的是HeatMap模組。
下邊以雙色球案例為例,資料使用生成的亂數,繪製出熱力圖:
import pyecharts.options as opts from pyecharts.charts import HeatMap import pandas as pd import numpy as np # 建立一個33行7列的DataFrame,資料使用亂數生成。每個資料表示該位置上該數位出現的次數 s1 = np.random.randint(0, 200, 33) s2 = np.random.randint(0, 200, 33) s3 = np.random.randint(0, 200, 33) s4 = np.random.randint(0, 200, 33) s5 = np.random.randint(0, 200, 33) s6 = np.random.randint(0, 200, 33) s7 = np.random.randint(0, 200, 33) data = pd.DataFrame( {'位置一': s1, '位置二': s2, '位置三': s3, '位置四': s4, '位置五': s5, '位置六': s6, '位置七': s7 }, index=range(1, 34) ) # 資料轉換為HeatMap支援的列表格式 value1 = [] for i in range(7): for j in range(33): value1.append([i, j, int(data.iloc[j, i])]) # 繪製熱力圖 x = data.columns heatmap=HeatMap(init_opts=opts.InitOpts(width='600px' ,height='650px')) heatmap.add_xaxis(x) heatmap.add_yaxis("aa", list(data.index), value=value1, # y軸資料 # y軸標籤 label_opts=opts.LabelOpts(is_show=True, color='white', position="center")) heatmap.set_global_opts(title_opts=opts.TitleOpts(title="雙色球中獎號碼熱力圖", pos_left="center"), legend_opts=opts.LegendOpts(is_show=False), # 不顯示圖例 # 座標軸設定項 xaxis_opts=opts.AxisOpts( type_="category", # 類目軸 # 分隔區域設定項 splitarea_opts=opts.SplitAreaOpts( is_show=True, # 區域填充樣式 areastyle_opts=opts.AreaStyleOpts(opacity=1) ), ), # 座標軸設定項 yaxis_opts=opts.AxisOpts( type_="category", # 類目軸 # 分隔區域設定項 splitarea_opts=opts.SplitAreaOpts( is_show=True, # 區域填充樣式 areastyle_opts=opts.AreaStyleOpts(opacity=1) ), ), # 視覺對映設定項 visualmap_opts=opts.VisualMapOpts(is_piecewise=True, # 分段顯示 min_=1, max_=170, # 最小值、最大值 orient='horizontal', # 水平方向 pos_left="center") # 居中 ) heatmap.render("heatmap.html")
熱力圖效果如下:
繪製水球圖使用的是Liquid模組。
from pyecharts.charts import Liquid liquid = Liquid() liquid.add('', [0.39]) liquid.render("liquid.html")
水球圖效果如下:
繪製日曆圖使用的是Calendar模組
主要使用的方法是add()方法
import pandas as pd import numpy as np from pyecharts import options as opts from pyecharts.charts import Calendar data = list(np.random.random(30)) # 求最大值和最小值 mymax = round(max(data), 2) mymin = round(min(data), 2) # 生成日期 index = pd.date_range('20220401', '20220430') # 合併列表 data_list = list(zip(index, data)) # 生成日曆圖 calendar = Calendar() calendar.add("", data_list, calendar_opts=opts.CalendarOpts(range_=['2022-04-01', '2022-04-30'])) calendar.set_global_opts( title_opts=opts.TitleOpts(title="2022年4月某指標情況", pos_left='center'), visualmap_opts=opts.VisualMapOpts( max_=mymax, min_=mymin+0.1, orient="horizontal", is_piecewise=True, pos_top="230px", pos_left="70px", ), ) calendar.render("calendar.html")
日曆圖效果如下:
以上就是Python資料視覺化之Pyecharts使用詳解的詳細內容,更多關於Python Pyecharts的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45