版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
一緒論
第1章緒論1.1研究背景及意義在科技高度發(fā)展的現(xiàn)代社會,大數(shù)據(jù)無處不在,各類信息呈爆炸式增長,人們在快節(jié)奏的生活中,時間與神經(jīng)常處于緊繃狀態(tài),在這樣的狀況中,許多人會選擇通過閱讀書籍來進行調節(jié),在書的世界中尋求心靈的放松。但挑選一部自己心儀的書籍并不是十分容易的事,往往需要查詢作者、讀者評價等多種信息,互聯(lián)網(wǎng)中的信息雖已十分完備,但各類排行榜中的書籍排名并不適用于所有讀者的喜好,查詢的過程使讀者還沒有開始閱讀已經(jīng)耗費大量時間及精力,這個過程極其容易降低讀者的閱讀意愿。因此,若能夠將書籍的數(shù)據(jù)整合并清晰地展現(xiàn)出來,幫助讀者直觀迅速地觀察數(shù)據(jù)、理解數(shù)據(jù)之間的聯(lián)系,將大大提升人們的閱讀意愿,更加輕松地選擇適合自己喜好的書籍,享受閱讀帶來的樂趣。1.2國內外研究現(xiàn)狀互聯(lián)網(wǎng)已成為現(xiàn)代人獲取信息的首選渠道,使用便捷成為了人們使用互聯(lián)網(wǎng)的最大理由。而爬蟲技術為互聯(lián)網(wǎng)更添一份便利,通過爬蟲,用戶可以迅速、準確地獲取到所需資源,爬蟲的應用領域十分廣泛,其中最流行的便是爬取網(wǎng)頁[1]。Python作為近年來十分常用且強大的編程語言,為爬蟲技術提供了許多方法和工具,不僅能夠高效地抓取信息,也能在避免反爬蟲方面發(fā)揮重要作用,確保用戶能夠安全、穩(wěn)定地獲取所需數(shù)據(jù)。結合Python語言的獨特優(yōu)勢與互聯(lián)網(wǎng)未來的蓬勃發(fā)展趨勢,可以得知Python爬蟲技術是一項具備廣闊拓展空間的前沿技術,掌握爬蟲技術知識不僅對個人成長大有裨益,更是能契合社會和時代對科技進步與創(chuàng)新的不懈追求[2]。數(shù)據(jù)可視化技術的發(fā)展最早可以追溯到18世紀前后應用的手工測量繪圖及統(tǒng)計學圖表[3],如今,隨著計算機技術的發(fā)展,數(shù)據(jù)可視化技術的形式與范圍也愈發(fā)完善,逐漸從平面二維向三維立體、動態(tài)交互發(fā)展。經(jīng)過查閱發(fā)現(xiàn),數(shù)據(jù)可視化的研究在國內外已十分普遍,在金融、醫(yī)療[4]、教育及城市發(fā)展等多個領域均扮演著舉足輕重的角色,使用數(shù)據(jù)可視化是對數(shù)據(jù)進行分析展示的十分適配的方法。21.3論文研究及設計內容因此,本研究將利用Python爬蟲技術,對市場主流網(wǎng)站豆瓣網(wǎng)中的書籍Top250排行榜進行精確的數(shù)據(jù)提取。獲取到數(shù)據(jù)后,將借助數(shù)據(jù)分析及可視化工具如pandas和seaborn等,對這些數(shù)據(jù)進行深入剖析。通過科學的分析,可以揭示出書籍排行榜背后的規(guī)律與趨勢,為讀者提供更為精準科學的篩選方法。基于這些分析結論,利用數(shù)據(jù)可視化繪圖工具pyecharts,繪制出書籍信息相關的交互式圖像,直觀地展示書籍的各項數(shù)據(jù),并令讀者通過交互操作,深入了解書籍的數(shù)據(jù)情況。最后將把這些圖像組合制作為清晰美觀的可視化大屏網(wǎng)頁,將書籍數(shù)據(jù)一目了然地呈現(xiàn)在讀者面前,幫助他們更加快捷便利地挑選到符合預期的心儀書籍。二設計所用相關技術3第2章設計所用相關技術2.1爬蟲部分2.1.1Requests在網(wǎng)絡爬蟲中,首先需要獲取網(wǎng)頁,Requests庫可以發(fā)送HTTP請求,幫助我們簡單快捷地獲取到目標網(wǎng)頁。Requests允許用戶以十分便捷的方式發(fā)送HTTP/1.1請求,不需要手動在URL中添加查詢字符串,也不需要對POST數(shù)據(jù)進行表單編碼操作,得益于urllib3的支持,長連接和HTTP連接池都是全自動的。Python具有十分豐富的庫文件,Requests屬于第三方庫,是基于Apache2協(xié)議開源一種的PythonHTTP庫[4],并非Python自帶庫,所以使用前需要先安裝,本次設計前采用pip安裝方法,通過在本地IDE中終端運行命令完成安裝。2.1.2BeautifulSoupBeautifulsoup庫在爬蟲中的主要作用是解析HTML或XML,可以幫助用戶十分方便快捷地從目標網(wǎng)頁中獲取信息。Beautifulsoup支持許多種解析器,如lxml及html5lib等Python內置的解析器以及部分第三方庫,這種功能使得Beautifulsoup庫能夠處理各式各樣的HTML及XML文檔。HTML的代碼結構為多個標簽組成,Beautifulsoup通過將HTML及XML文檔轉換為樹形結構,能夠做到精準定位到標簽位置[6],方便用戶遍歷文檔中的元素,同時也具備搜索功能,用戶可通過標簽、屬性等獲取目標元素。此外,Beautifulsoup在修改、輸出文檔方面也具有十分強大的功能,使用戶在有定制化需求時可快捷實現(xiàn),并輸出美觀、可讀性強的文檔。2.1.3PandasPandas是一個Python中基于NumPy的強大且靈活的開源數(shù)據(jù)分析及數(shù)據(jù)處理庫,Pandas中包含了許多數(shù)據(jù)模型,以及大量可以幫助用戶快捷處理數(shù)據(jù)的函數(shù)和方法,十分適合進行結構化數(shù)據(jù)的處理,如類似于Excel表格的表格型數(shù)據(jù)。同時Pandas也可以在數(shù)據(jù)清洗、數(shù)據(jù)預處理、數(shù)據(jù)可視化、機器學習等領域中發(fā)揮作用。Pandas中具有兩種數(shù)據(jù)結構,一種是Series,一種是DataFrame,Series是一組帶有索引的一維數(shù)組,數(shù)組中可包含多種不同數(shù)據(jù)類型的元素,而DataFrame是一種二維表格結構,這種結構在使用中更加常見,可包含更多的數(shù)據(jù),可視為多個Series結合而成的字典[7]。在本次設計中主要4使用DataFrame,通過初始化建立一個DataFrame,將爬取出的“書名”、“作者”、“出版日期”等數(shù)據(jù)有序地存儲在csv文件中,便于下一步數(shù)據(jù)分析中使用。2.1.4TimePython中的Time庫本身是用來對時間進行相關操作的庫,如獲取當前時間、日期,對時間進行加減法等。Time庫包含三類函數(shù),分別為時間獲?。╰ime()、ctime()、gmtime()),時間格式化(strftime()、strptime()),程序計時(sleep()、perf_counter())。由于在網(wǎng)站中進行爬蟲操作時可能會遇到網(wǎng)站反爬機制,導致無法獲取數(shù)據(jù),本次設計中使用Time庫中的sleep模塊,通過設置,在爬取每一頁數(shù)據(jù)之間間隔一段時間,來達到反反爬蟲的效果。2.2數(shù)據(jù)分析與可視化部分2.2.1matplotlibMatplotlib是Python體系中的重要組成部分,是一個使用廣泛的開源數(shù)據(jù)可視化工具包,功能十分全面,已成為數(shù)據(jù)科學領域內不可或缺的數(shù)據(jù)可視化工具。Matplotlib能夠繪制出各類圖像,使用matplotlib不僅限于可以制作2D的圖像,如折線圖、餅狀圖、柱狀圖、雷達圖等,同時也具備制作3D圖像及動畫的功能[8],使數(shù)據(jù)可以在三維空間中立體地呈現(xiàn),大大增強了數(shù)據(jù)的可讀性。本次設計中主要用到matplotlib中的pyplot子庫,pyplot是一個很常用的可視化模塊,使用方便上手快速,能十分便捷地繪制各種動靜態(tài)、可交互的可視化圖表,并根據(jù)需求自定義更改圖表元素,如更改節(jié)點或線條顏色、更改線條類型參數(shù)、更改節(jié)點標記字符等,使目標圖像更具特色,準確表達信息。2.2.2SeabornSeaborn是Python中在matplotlib基礎上建立的一種專門用于數(shù)據(jù)可視化繪制各類圖表的庫,如條形圖、折線圖、熱力圖、密度圖、箱線圖等等,seaborn的使用十分便捷,它所提供的高級接口使得用戶可以大大減少編寫代碼的工作量,操作快速,上手也十分簡單,更加輕松地獲取數(shù)據(jù)可視化圖表,seaborn相比于matplotlib來說擁有更加美觀的圖像及顏色設計,它提供了各式各樣的主題,如深色網(wǎng)格主題darkgrid、淺色網(wǎng)格主題whitegrid等,以及十分豐富的配色方案調色板,不只局限于單色,可以將顏色進行組合搭配,如二設計所用相關技術5“Blues”、“PuBuGn”等。同時,seaborn的兼容性也有很大優(yōu)勢,能夠同時支持NumPy以及pandas的數(shù)據(jù)結構[9]。2.2.3PandasPandas庫自身并未提供數(shù)據(jù)可視化的功能,但如上文所述,pandas可以和其余可視化庫如seaborn、matplotlib等直接無縫集成。Pandas提供了靈活易用的數(shù)據(jù)結構,能夠十分簡便地處理數(shù)據(jù),這為數(shù)據(jù)可視化提供了良好的數(shù)據(jù)基礎。2.3前端展示部分2.3.1pyechartsPyecharts是一款十分強大的可視化工具,基于Echarts,與Python語言相結合而成。Echarts本身是一個JavaScript庫,pyecharts實現(xiàn)了echarts與Python之間的連接,使echarts更加具有普遍性,增大了使用范圍,也使Python在數(shù)據(jù)可視化領域更加靈活高效。Pyecharts主要用于制作各類圖像、表格等,為用戶提供了各式各樣的數(shù)據(jù)表形式,包括30余類常見圖表,同時也提供了極高自由度的自定義函數(shù)配置項來更改圖表的特性,使圖表更具有美觀性、可讀性[10]。Pyecharts官方文檔十分詳細,且有大量具體實例,不僅可在本地IDE運行,也可在JupyterNotebook環(huán)境直接生成圖像,使用便捷易上手,是數(shù)據(jù)可視化的重要工具。6第3章網(wǎng)絡爬蟲3.1數(shù)據(jù)來源數(shù)據(jù)來源于豆瓣網(wǎng)(/)—讀書(/)—豆瓣圖書250(/top250?icn=index-book250-all)。3.2過程3.2.1網(wǎng)頁板塊分析打開豆瓣網(wǎng)站,找到讀書后打開豆瓣圖書Top250網(wǎng)頁(/top250?icn=index-book250-all),網(wǎng)頁布局如圖(圖3.1、圖3.2)所示,由頂部索引(豆瓣、讀書、電影……)、搜索欄、次索引欄(購書單、電子圖書……)、圖書(包含各個圖書小類子項)、底部信息欄組成。每頁展示二十五本圖書,共十頁,總計二百五十本圖書。三網(wǎng)絡爬蟲73.2.2網(wǎng)頁元素審查在瀏覽器中打開網(wǎng)頁,并在網(wǎng)頁中單擊右鍵,選擇審查元素,即可看到網(wǎng)頁代碼,其中<bodystyle>中包含網(wǎng)頁主界面所有板塊(圖3.3),以第一本圖書《紅樓夢》為例,網(wǎng)頁信息欄中包含作品名稱、作者、出版社、出版時間、價格、評分、評分人數(shù)、一句話評價信息。根據(jù)審查,可發(fā)現(xiàn)圖書信息存放于<divclass=“article”>中,單本圖書每一本存放在一個<tablewidth=“100%”>標簽中,其中,作品名稱存放于<divclass=“Pl2”>中的title元素(圖3.4);作者、出版社、出版日期、價格存放于<pclass=“pl”>中,分別用“/”符隔開;評分及評價人數(shù)存放于<divclass=“starclearfix”>中,其中評分屬于“rating_nums”class,評價人數(shù)屬于“pl”class。至此即可獲取到所有所需數(shù)據(jù)的位置,觀察可發(fā)現(xiàn)每本圖書的信息存放位置都是一樣的,通過循環(huán)即可實現(xiàn)所有數(shù)據(jù)的獲取。83.2.3爬蟲代碼編寫(1)導入爬蟲所需的Python庫和模塊(圖3.5),包含requests、beautifulsoup、pandas及time。Requests庫用于向網(wǎng)站發(fā)送請求,beautifulsoup庫用于解析獲取到的HTML內容,pandas庫用于將解析過的數(shù)據(jù)有序存放在CSV文件中,time庫用于在爬取過程中添加等待時間,防止網(wǎng)頁反爬蟲;(2)創(chuàng)建一些空的list,用于存放所需的書籍信息中不同數(shù)據(jù)類型;(3)定義新的函數(shù),用于獲取書籍數(shù)據(jù)信息,分為兩種,第一種是使用requests發(fā)送請求,第二種是使用beautifulsoup解析獲取后返回的信息。通過for循環(huán),由元素審查中獲取到的數(shù)據(jù)位置,解析每一類書籍信息,以書名為例,書名信息在網(wǎng)站中存放在“item”class下的“pl2”class,從屬于“a”標簽,屬性名稱為“title”,則可以通過解析,將書籍名稱逐個添加到創(chuàng)建過的list中(圖3.6),評分、評分人數(shù)、價格等其余書籍信息同理;(4)根據(jù)不同情況執(zhí)行不同的代碼邏輯,若為正常情況,則按默認邏輯輸出數(shù)據(jù),而個別圖書可能出現(xiàn)信息缺失或有多個信息的情況,如圖書作者信息缺失(第5頁《十萬個為什么》),或圖書價格數(shù)據(jù)有超過一個的(第1頁《福爾摩斯探案全集(上中下)》)等。將缺失部分記為空值,有多個數(shù)據(jù)的部分用“/”符號分割。以圖書作者及譯者缺失為例(圖3.7);三網(wǎng)絡爬蟲9(5)存儲數(shù)據(jù),首先初始化一個DataFrame對象,并使用pandas庫將已定義并獲取完成的數(shù)據(jù)列表拼接為一個DataFrame形式,使數(shù)據(jù)以列的形式展現(xiàn)出來(圖3.8);(6)爬蟲主函數(shù)。為了防止網(wǎng)站反爬,首先需要定義一個爬蟲請求頭,請求頭可在元素審查的“網(wǎng)絡”部分獲取,將“User-Agent”部分粘貼到headers部分中達到反爬效果。之后通過for循環(huán)來按序爬取10頁共250條數(shù)據(jù),并使用time庫中的sleep模塊達到每爬取一頁等待1秒的效果,防止網(wǎng)頁反爬。最終將文件保存到指定名稱的csv文件中(圖3.9)。海南師范大學本科生畢業(yè)論文103.3獲取數(shù)據(jù)結果在指定csv文件中可看到目標數(shù)據(jù)如書名、作者、出版日期等,已被清晰有序地存放(圖3.10),為下一步的數(shù)據(jù)分析可視化奠定了良好的數(shù)據(jù)基礎。四數(shù)據(jù)分析與數(shù)據(jù)可視化11第4章數(shù)據(jù)分析與數(shù)據(jù)可視化4.1數(shù)據(jù)分析在數(shù)據(jù)可視化過程中,數(shù)據(jù)分析既是目的也是前期必須要做好的基礎,其重要性在于能夠為數(shù)據(jù)可視化提供邏輯支持,使可視化更加清晰有條理。在書籍排行中,評分是一項必不可少的判定因素,評分代表讀者對書籍內容、情節(jié)、人物設定等的認可度,而對于想要尋找書籍進行閱讀的人群來說,評分無疑是一個重要的參考,評分越高,意味著書籍各方面的綜合質量越高,對讀者的吸引力也同步提升。從這一角度出發(fā),本次研究將從書籍評分入手,輔以書籍排名及評分人數(shù)指標,探究排名與其余各項數(shù)據(jù)的關聯(lián)性,從而觀察總結出讀者應如何更加準確地篩選心儀書籍的結論。(1)導入分析所需的Python庫(圖4.1),數(shù)據(jù)分析階段主要用到的庫為pandas,以及少量的seaborn及matplotlib。Pandas庫用于數(shù)據(jù)處理,seaborn庫及matplotlib庫用于繪制圖像。(2)使用pandas庫使用庫中的pd.read_csv()函數(shù)讀取已爬取完畢的csv文件,函數(shù)將自動將目標csv文件轉換為DataFrame對象。接著使用.head()函數(shù)輸出DataFrame對象的前五行數(shù)據(jù),以便檢查文件是否讀取成功(圖4.2),可以看到程序正確輸出了文件的內容;12(3)由于數(shù)據(jù)文件常會出現(xiàn)有異常值、空值等情況,所以本次研究采用繪制箱線圖的方法來檢查數(shù)據(jù)中是否存在異常值。繪制圖像之前,在未配置的情況下,中文顯示容易出現(xiàn)亂碼情況,所以需要通過使用matplotlib中的rcParams來修改樣式,解決中文無法顯示或出現(xiàn)亂碼的狀況。(圖4.3)。箱線圖的繪制需使用到seaborn庫,首先定位到“評分”列,并確認列中的數(shù)據(jù)均為浮點型(float),確認無誤后即可使用“boxplot”工具繪制箱線圖(圖4.4)??梢愿鶕?jù)圖像(圖4.5)看出“評分”列數(shù)據(jù)并無異常值;四數(shù)據(jù)分析與數(shù)據(jù)可視化13(4)利用pandas的數(shù)據(jù)分析模塊,計算出Top250書籍的平均評分,并查看最大值與最小值(圖4.6),可看出平均評分處于較高水準,最大與最小值的差值為1.2,最低值也處于整體書籍的上游水準。144.2數(shù)據(jù)可視化(1)Top250書籍評分占比餅狀圖。餅圖通過分割圓形的方式展示數(shù)據(jù),并標以不同顏色,具有良好的可讀性,能夠直觀明了的看出各部分的占比。餅圖的繪制使用到matplotlib中的pyplot子庫,首先使用pandas讀取csv文件并定位“評分”列,通過pyplot庫設置餅狀圖規(guī)格后進行繪制(圖4.7),并在圖中展示各部分百分比(圖4.8);四數(shù)據(jù)分析與數(shù)據(jù)可視化15通過該餅狀圖,可以得出以下結論:Top250書籍中最高分與最低分占比最少,第二高分與第二低分次之,占比最高的為中間分值9.1及9.0,即為平均評分值的區(qū)間,極高分(9.5分及以上)的書籍僅占比6.8%,數(shù)量十分稀少。(2)書籍"排名-評分"折線圖。在書籍排名中,評分必然為重要標準,但評分是否能夠決定排名并不肯定,本次研究采用折現(xiàn)圖的方法將排名與評分直接的關系展現(xiàn)出來,因為數(shù)據(jù)量較大,繪圖僅采用前70條數(shù)據(jù)。由于在繪制前圖時已獲取過文件,所以本次繪制僅需定位到“排名”及“評分”列,并規(guī)定取前70條數(shù)據(jù)即可,通過pyplot的“color”及“marker”模塊自定義圖像顏色及數(shù)據(jù)點標注樣式,定義完成后即可使用“xticks”繪制折線圖(圖4.9);16通過該折線圖,可以看出隨著排名下降,評分整體略呈下降態(tài)勢,但并非絕對正相關,在排名較靠后的書籍中也有評分極高的情況出現(xiàn),如排名第24的《野草》達到了9.5的高分,以及排名29的《卡拉馬佐夫兄弟》達到9.6的高分,所以書籍的評分并不能直接決定排名。(3)書籍"排名-評分人數(shù)"折線圖。讀者在閱讀一本書時,常常會有點評或分享感受的欲望,評分人數(shù)往往可以展現(xiàn)出該書籍的普及度,而評分人數(shù)與書籍排名是否有一定關聯(lián),本次研究采用折線圖的方式探尋,同樣采用Top250中的前70條數(shù)據(jù)進行繪制,與"排名-評分"折線圖的繪制方法相同,將x軸數(shù)據(jù)設置為書籍排名,y軸數(shù)據(jù)設置為評分人數(shù)(圖4.10);通過該折線圖,無法看出評分人數(shù)與書籍排名之間有明顯關聯(lián),將數(shù)據(jù)擴大至前200條并再次進行繪圖(圖4.11);四數(shù)據(jù)分析與數(shù)據(jù)可視化17擴大數(shù)據(jù)范圍后可看出,排名前80的書籍評分人數(shù)較之后的更多,尤其是會出現(xiàn)極高的峰值,如排名第2的《活著》有80萬余評分人數(shù)、排名第13的《小王子》有75萬余評分人數(shù)、排名第55的《追風箏的人》有79萬余評分人數(shù),而80名之后的數(shù)據(jù)趨于平穩(wěn),僅偶爾出現(xiàn)小高峰。可見排名靠前的書籍更易出現(xiàn)評分人數(shù)極多的情況,即評分也更具參考價值,但并非排名靠前的書籍評分人數(shù)一定更多。(4)書籍“評分-評分人數(shù)”散點圖。在觀察過排名與評分、排名與評分人數(shù)的關聯(lián)后,本次研究仍需觀察評分與評分人數(shù)之間的數(shù)據(jù)關系。由于需要一目了然地看出每階段評分的評分人數(shù)數(shù)量,所以采用散點圖的方式,使用seaborn庫的scatterplot方法繪制散點圖(圖4.12);通過該散點圖,可以看出評分人數(shù)與評分之間并無明顯聯(lián)系,甚至評分最高的書籍評分人數(shù)僅不到20萬,而評分最低的書籍評分人數(shù)達到近80萬。184.3結果分析由以上的數(shù)據(jù)分析及數(shù)據(jù)可視化可以分析得知,書籍排名結果是評分與評價人數(shù)的綜合結果,僅評分高或評分人數(shù)多無法絕對證明書籍的內容質量,相比之下評分比評分人數(shù)更具說服力,但仍需評分人數(shù)的數(shù)量支持,若評分人數(shù)較少則評分也缺乏準確性。讀者在挑選心儀書籍時應結合兩點綜合判斷,才能更加準確地找到多數(shù)人所認可的書籍。五前端可視化展示19第5章前端可視化展示5.1數(shù)據(jù)分析并制作可視化圖像(1)中國/外國作者書籍數(shù)量上榜量前十柱狀圖書籍的撰寫往往與時代背景及文化相關聯(lián),如中國當代著名小說《活著》,講述了主角在內戰(zhàn)、“文化大革命”、大躍進的時代背景下的一系列遭遇,作者余華不單是在寫主角的苦難人生,更是在映射時代背景中的和主角相同的無數(shù)小人物[11]。國內與國外的環(huán)境雖有相似之處,但歷史背景存在很大差異,從而導致國內外書籍的寫作風格也各不相同,讀者可根據(jù)喜好選擇心儀的書籍類型。在繪制圖像前首先需要獲取數(shù)據(jù),在JupyterNotebook中使用pandas庫中的set_option方法對csv文件中“作者”一列進行統(tǒng)計,并按數(shù)量從高到低排序。(圖5.1)得到數(shù)據(jù)支持后即可開始可視化圖像制作,首先在終端中使用pip下載pyecharts,下載成功后在文件中導入pyecharts圖庫中的Bar(柱狀圖)模塊及option模塊。為后續(xù)能夠更加方便地將圖像組合成為大屏,首先需要定義一個函數(shù),函數(shù)返回類型為Bar。以“中國作者書籍上榜量前十”為例,初始化一個變量a,用于存儲繪制的柱狀圖,使用Bar()函數(shù)繪制圖像,將x軸、y軸內容進行填充,同時設置柱狀圖顏色,并使用set_global_opts()方法設置全局選項,設置圖名稱及x軸、y軸名稱,由于x軸內容信息較多,為節(jié)省空間防海南師范大學本科生畢業(yè)論文20止文字重疊或顯示不全,使圖像更加美觀,利用Label10pts方法將x軸上的標簽統(tǒng)一旋轉-25度,最后返回變量a。(圖5.2)在組合圖像成為大屏之前,為審查圖像是否正常顯示并符合要求,可采用render()函數(shù)方法將圖像自動渲染為HTML文件(圖5.3),可直接在瀏覽器中打開進行查看,便于進一步修改(圖5.4、圖5.5)。五前端可視化展示21(2)Top10書籍評分面積圖由前文(4.2)可得知,書籍排名與書籍評分并非強相關,排名靠前的書籍不一定是最高分的書籍。每位讀者在篩選書籍時都有自己不同的標準,系統(tǒng)排名并不能代表所有讀者的喜好,評分折線圖可以使讀者一目了然地看出書籍評分高地的不同,進一步選出心儀書籍。圖像類型選擇面積圖,在折線圖的基礎上增加填充,并將原本較為生硬的折現(xiàn)換為平滑曲線,使圖像更為美觀。與柱狀圖類似,先定義函數(shù),返回類型為Line(線形),初始化變量c,填入x軸、y軸信息,使用“is_smooth”方法將折線變?yōu)槠交€,并在.set_series_opts()、.set_global_opts()中設置圖像參數(shù),如面積填充顏色、透明度、標簽旋轉角度等,由于數(shù)值相差較小,若y軸從0開始計數(shù)則圖像變化不明顯,不便于觀察,所以需特別將y軸數(shù)值設置為從9開始計數(shù),使數(shù)值變化更加鮮明。最后返回變量c(圖5.6)。22將圖像渲染為HTML文件查看(圖5.7)。(3)評分人數(shù)前十名書籍柱狀圖書籍內容及作者文筆的評判除客觀因素外,也與讀者的個人喜好有很大關聯(lián),對書籍的評分往往帶有主觀因素,因此書籍評分人數(shù)的多少決定了評分的準確性,評分人數(shù)越多,收集的數(shù)據(jù)樣本越多,也更代表大眾的選擇,增強了數(shù)據(jù)的可靠性。要篩選出評分人數(shù)前十的書籍,需要使用pandas庫,利用.sort_values()方法將csv文件中的數(shù)據(jù)以“評分人數(shù)”列的數(shù)量從高到低排列。(圖5.8)五前端可視化展示23在普通柱狀圖的基礎上,采用了象形柱狀圖,能夠更加直觀地看出各標簽間的數(shù)量關系。象形柱狀圖所使用的模塊為PictorialBar,在導入options及PictoriaBar的基礎上,象形柱狀圖還需導入SymbolType模塊,用于圖標自定義,不僅如此,象形柱狀圖中的柱狀圖組成塊大小也可以進行調節(jié),擁有極強的靈活性。將x軸、y軸數(shù)據(jù)設置完成后,使用上文中類似的方法繪制象形柱狀圖,定義函數(shù)bar_d()并初始化變量d,經(jīng)過一系列參數(shù)設置后返回變量d(圖5.9)。將圖像渲染為HTML文件查看(圖5.10)。24(4)Top250書籍評分占比餅圖評分在眾多因素中,是最能體現(xiàn)書籍質量的要素,而各個平臺的評分體系不同,讀者群體類型也會有一定差距,打分的嚴格程度不盡相同,由前文(4.2)中可以看到,Top250排行榜中書籍最高分為9.7,最低分為8.5,通過評分占比讀者可以預設自己篩選圖書的心理預期,如讀者希望閱讀評分較高的書籍,可將目標投向評分在前30%的書籍。首先導入Pie(餅圖)模塊,通過設置圓的尺寸及同心圓的尺寸達到環(huán)形餅圖的效果,增強圖像的視覺舒適度,餅圖的配色效果、側標簽顏色尺寸、字體顏色等都可通過自定義改變,以配合其余圖像的配色,達到美觀的目的。(圖5.11)五前端可視化展示25將圖像渲染為HTML文件查看(圖5.12)。(5)Top30書籍詞云詞云能夠將書籍文本數(shù)據(jù)以視覺化的方式呈現(xiàn),使讀者可以快速看到文本關鍵詞,通過數(shù)據(jù)的設置,詞云可以幫助讀者一目了然地看到榜中哪些書籍最受歡迎。詞云的制作用到了WordCloud模塊,我們可以通過custom_color_func()方法為詞云進行色彩搭配,通過if語句可以以詞匯或頻率為條件為每個模塊單獨設置顏色。將排行榜中Top30的書籍按從上到下排序,依次賦予從大到小的頻率數(shù)值,代表書籍熱度,頻率越高的書籍名稱在詞云中展示的尺寸越大,越容易被讀者捕捉。(圖5.13)海南師范大學本科生畢業(yè)論文26將圖像渲染為HTML文件查看(圖5.14)。(6)大屏標題五前端可視化展示27在可視化大屏制作中必不可少的一個部分就是大屏標題,標題可以讓用戶在第一時間了解大屏的主要內容。標題的生成本次設計選擇利用Pie()模塊,但并不繪制餅圖,只顯示標題。(圖5.15)5.2可視化大屏生成圖像繪制完成后,每個圖像仍是單獨的個體,要制作可視化大屏必須將各個分散的圖像整合成為一個完整的HTML文件。Pyecharts中提供了許多種組合圖表的組件,本次設計采用Page模塊,page可以將多個圖表按順序排列在同一個HTML文件中,同時使用DraggablePageLayout方法可以實現(xiàn)用拖拽的形式將圖表組合布局,支持圖表尺寸任意改變,十分方便快捷。將DraggablePageLayout方法導入后利用add()函數(shù)將繪制圖表時自定義的函數(shù)名稱加入到page中,直接使用render方法即可生成一個用于布局的臨時HTML文件(圖5.16)。在臨時文件中完成頁面布局后,點擊頁面左上角的“SaceConfig”,會自動生成一個名為“chart_config”的json文件,文件內存儲了調整過的頁面布局位置數(shù)據(jù)。將json文件與page文件放在同一目錄下,并將文件名通過.save_resize_html()導入page中,再次生成最終大屏HTML文件,并通過修改HTML屬性的形式設置可視化大屏背景顏色,使界面更加美觀,通過瀏覽器打開最終大屏HTML文件即可看到布局完成的最終網(wǎng)頁界面。(圖5.17)28六結語29第6章結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職大氣污染防治管理(管理技術)試題及答案
- 2025年中職(城市綠化管理)綠化維護階段測試題及答案
- 2025年大學大三(焊接技術與工程)焊接修復技術綜合測試題及答案
- 2025年大學納米材料與技術(納米材料技巧)試題及答案
- 2026年銀耳類食品(膠質檢測)試題及答案
- 教學臨時用電安全技術課件
- 中國采礦技術
- 養(yǎng)老院老人康復設施維修人員考核獎懲制度
- 青島新東方國際雙語學校項目EPC項目工期履約總結交流
- 養(yǎng)老院工作人員獎懲制度
- 賬務清理合同(標準版)
- 投標委托造價協(xié)議書
- 孕婦上班免責協(xié)議書
- 神經(jīng)內科腦疝術后護理手冊
- 2026年包頭輕工職業(yè)技術學院單招職業(yè)適應性測試題庫附答案
- 2025年中厚鋼板行業(yè)分析報告及未來發(fā)展趨勢預測
- 光伏工程掛靠合同范本
- 電磁炮課件教學課件
- 2025數(shù)據(jù)基礎設施參考架構
- T-CITS 529-2025 應答器傳輸系統(tǒng)車載設備 帶內抗擾度試驗方法
- 醫(yī)學人工智能課題申報書
評論
0/150
提交評論