日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

什么是气泡图?怎样用Python绘制?有什么用?终于有人讲明白了

發布時間:2025/3/15 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是气泡图?怎样用Python绘制?有什么用?终于有人讲明白了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


導讀:什么是氣泡圖?可以用來呈現哪些數據關系?在數據分析過程中可以解決哪些問題?怎樣用Python繪制氣泡圖?本文逐一為你解答。

作者:屈希峰

來源:大數據DT(ID:bigdatadt)

01 概述

氣泡圖(Bubble)是一種多變量圖表,是散點圖的變體,也可以認為是散點圖和百分比區域圖的組合。其可用于展示三個變量之間的關系,和散點圖一樣,繪制時將一個變量放在橫軸,另一個變量放在縱軸,而第三個變量則用氣泡的大小來表示。

排列在工作表的列中的數據(第一列中列出x值,在相鄰列中列出相應的y值和氣泡大小的值)可以繪制在氣泡圖中。

氣泡圖與散點圖相似,不同之處在于:氣泡圖允許在圖表中額外加入一個表示大小的變量進行對比,而第四維度的數據則可以通過不同的顏色來表示(甚至在漸變中使用陰影來表示)。

另一種使用氣泡元素的流行方法是使用氣泡地圖。在氣泡地圖中,x和y分別代表一個地理位置的經緯坐標。在不要求定位非常精確的情況下,氣泡地圖可以將數據的相對集中度完美地體現在地理背景中。

此外,表示時間維度的數據時,可以將時間維度作為直角坐標系中的一個維度,或者結合動畫來表現數據隨著時間的變化情況。

氣泡圖通常用于比較和展示不同類別圓點(這里我們稱為氣泡)之間的關系,通過氣泡的位置以及面積大小。從整體上看,氣泡圖可用于分析數據之間的相關性。

但需要注意的是,氣泡圖的數據大小容量有限,氣泡太多會使圖表難以閱讀。但是可以通過增加一些交互行為彌補:隱藏一些信息,當鼠標點擊或者懸浮時顯示,或者添加一個選項用于重組或者過濾分組類別。

最后,氣泡的大小是映射面積而非半徑或直徑,如果是基于半徑或者直徑,圓的大小不僅會呈現指數級的變化,而且還會導致視覺上的誤差。如圖1所示。

▲圖1 氣泡圖

02 實例

氣泡圖的代碼如代碼示例①所示。

代碼示例①

1#?簡單氣泡圖?? 2x=[1,2,3,4]?? 3y=[2,4,6,8]?? 4sizes?=?np.array(y)*5?#?氣泡大小,單位屏幕像素?? 5p?=?figure(title="bubble?chart")?? 6p.scatter(x,?y,?marker="circle",?size=sizes,?color="navy",?? 7#?????fill_color=None,?line_width=2?? 8?????????)?? 9show(p)

運行結果如圖2所示。

▲圖2 代碼示例①運行結果

從代碼示例①中的第6行可以看出,氣泡圖的繪制仍使用散點圖法,稍微不同的是在該方法中定義了散點數據的尺寸(size)大小。除此之外,可以再增加一個維度,用不同的氣泡顏色進行數據分類。

代碼示例②

1#?復雜氣泡圖,完整代碼??2import?pandas?as?pd??3from?bokeh.embed?import?file_html??4from?bokeh.io?import?output_notebook,?show??5from?bokeh.layouts?import?layout??6from?bokeh.models?import?(??7???????ColumnDataSource,?Plot,?Circle,?Range1d,?LinearAxis,?HoverTool,???8?????Text,?SingleIntervalTicker,?Slider,?CustomJS,?Legend,?LegendItem,?CategoricalColorMapper)??#?底層樣式??9from?bokeh.palettes?import?Spectral6??10#?from?data?import?process_data??11import?numpy?as?np??12def?process_data():??13????from?bokeh.sampledata.gapminder?import?fertility,?life_expectancy,?population,?regions??1415????#?Make?the?column?names?ints?not?strings?for?handling??16????columns?=?list(fertility.columns)??17????years?=?list(range(int(columns[0]),?int(columns[-1])))??18????rename_dict?=?dict(zip(columns,?years))??1920????fertility?=?fertility.rename(columns=rename_dict)??21????life_expectancy?=?life_expectancy.rename(columns=rename_dict)??22????population?=?population.rename(columns=rename_dict)??23????regions?=?regions.rename(columns=rename_dict)??24????regions_list?=?list(regions.Group.unique())??2526????#?Turn?population?into?bubble?sizes.?Use?min_size?and?factor?to?tweak.??27????scale_factor?=?200??28????population_size?=?np.sqrt(population?/?np.pi)?/?scale_factor??29????min_size?=?3??30????population_size?=?population_size.where(population_size?>=?min_size).fillna(min_size)??3132????return?fertility,?life_expectancy,?population_size,?regions,?years,?regions_list??3334#?數據預處理,感興趣的讀者可以在Pandas提前處理好直接加載??35fertility_df,?life_expectancy_df,?population_df_size,?regions_df,?years,?regions_list?=?process_data()??36sources?=?{}??37region_name?=?regions_df.Group??38region_name.name?=?'region'??39for?year?in?years:??40???????fertility?=?fertility_df[year]??41???????fertility.name?=?'fertility'??42???????life?=?life_expectancy_df[year]??43???????life.name?=?'life'???44???????population?=?population_df_size[year]??45???????population.name?=?'population'???46???????new_df?=?pd.concat([fertility,?life,?population,?region_name],?axis=1)??47???????sources['_'?+?str(year)]?=?ColumnDataSource(new_df)??48dictionary_of_sources?=?dict(zip([x?for?x?in?years],?['_%s'?%?x?for?x?in?years]))49js_source_array?=?str(dictionary_of_sources).replace("'",?"")??50#?畫布參數??51xdr?=?Range1d(1,?9)??52ydr?=?Range1d(20,?100)??53plot?=?Plot(??54????????x_range=xdr,??55????????y_range=ydr,??56????????plot_width=800,??57????????plot_height=400,??58????????outline_line_color=None,??59????????toolbar_location=None,???60????????min_border=20,??61)??62#?坐標軸參數??63AXIS_FORMATS?=?dict(??64????????minor_tick_in=None,??65????????minor_tick_out=None,??66????????major_tick_in=None,??67????????major_label_text_font_size="10pt",??68????????major_label_text_font_style="normal",??69????????axis_label_text_font_size="10pt",??7071????????axis_line_color='#AAAAAA',??72????????major_tick_line_color='#AAAAAA',??73????????major_label_text_color='#666666',??7475????????major_tick_line_cap="round",??76????????axis_line_cap="round",??77????????axis_line_width=1,??78????????major_tick_line_width=1,??79)??80xaxis?=?LinearAxis(ticker=SingleIntervalTicker(interval=1),?axis_label="Children?per?woman?(total?fertility)",?**AXIS_FORMATS)??81yaxis?=?LinearAxis(ticker=SingleIntervalTicker(interval=20),?axis_label="Life?expectancy?at?birth?(years)",?**AXIS_FORMATS)?????82plot.add_layout(xaxis,?'below')??83plot.add_layout(yaxis,?'left')??84#?添加年份圖層(最底層)??85text_source?=?ColumnDataSource({'year':?['%s'?%?years[0]]})??86text?=?Text(x=2,?y=35,?text='year',?text_font_size='150pt',?text_color='#EEEEEE')??87plot.add_glyph(text_source,?text)??88#?色盤,分類映射??89color_mapper?=?CategoricalColorMapper(palette=Spectral6,?factors=regions_list)?90#?繪制氣泡(散點)??91renderer_source?=?sources['_%s'?%?years[0]]??92circle_glyph?=?Circle(??93????????x='fertility',?y='life',?size='population',??94????????fill_color={'field':?'region',?'transform':?color_mapper},???95????????fill_alpha=0.8,???96????????line_color='#7c7e71',?line_width=0.5,?line_alpha=0.5)??97#?添加圖層??98circle_renderer?=?plot.add_glyph(renderer_source,?circle_glyph)??99#?添加hover工具?? 100tooltips?=?"@index"?? 101plot.add_tools(HoverTool(tooltips=tooltips,?renderers=[circle_renderer]))?? 102#?添加滾動條空間?? 103code?=?"""? 104????var?year?=?slider.value,? 105???????????sources?=?%s,? 106???????????new_source_data?=?sources[year].data;? 107????renderer_source.data?=?new_source_data;? 108????text_source.data?=?{'year':?[String(year)]};? 109"""?%?js_source_array?? 110#?數據回調?? 111callback?=?CustomJS(args=sources,?code=code)?? 112slider?=?Slider(start=years[0],?end=years[-1],?value=1,?step=1,?title="Year",?callback=callback)?? 113callback.args["renderer_source"]?=?renderer_source?? 114callback.args["slider"]?=?slider?? 115callback.args["text_source"]?=?text_source?? 116#?顯示?? 117show(layout([[plot],?[slider]],?sizing_mode='scale_width'))??

運行結果如圖3所示。

▲圖3 代碼示例②運行結果

代碼示例②第92行采用models接口進行氣泡繪制,并使用滑塊控件進行不同年份數據的回調,拖動圖中的滑動塊可以動態顯示不同年份的數據;鼠標懸停在氣泡上可以查看是哪個國家的數據。

如果年份數據足夠多,則可以使用while循環回調加載不同年份的數據,其展示效果就是一幅類似于Gif效果的動圖。

關于作者:屈希峰,資深Python工程師,Bokeh領域的實踐者和布道者,對Bokeh有深入的研究。擅長Flask、MongoDB、Sklearn等技術,實踐經驗豐富。知乎多個專欄(Python中文社區、Python程序員、大數據分析挖掘)作者,專欄累計關注用戶十余萬人。

本文摘編自《Python數據可視化:基于Bokeh的可視化繪圖》,經出版方授權發布。

延伸閱讀《Python數據可視化》

長按上方二維碼了解及購買

轉載請聯系微信:DoctorData

推薦語:從圖形繪制、數據動態展示、Web交互等維度全面講解Bokeh功能和使用,不含復雜數據處理和算法,深入淺出,適合零基礎入門,包含大量案例。

  • 數據中臺VS業務中臺、數據中臺VS數據倉庫,到底有什么區別?

  • “讓數據用起來”:解讀數據中臺必備的4個核心能力

  • Python數據可視化:5段代碼搞定散點圖繪制與使用,值得收藏

  • 企業數字化轉型與中臺建設全攻略:什么階段進行?采用哪些方法?

據統計,99%的大咖都完成了這個神操作

????

點擊閱讀原文,了解更多

總結

以上是生活随笔為你收集整理的什么是气泡图?怎样用Python绘制?有什么用?终于有人讲明白了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲亚洲一区 | 夜夜爽爽| 国产绿帽一区二区三区 | 网站在线观看你懂的 | 久久久久久久久久成人 | 久久亚洲中文字幕无码 | 国产美女裸体无遮挡免费视频 | 国产精品无码白浆高潮 | 国产视频精品免费 | 婷婷五月综合久久中文字幕 | 欧美视频在线观看免费 | 手机看片日本 | 超级砰砰砰97免费观看最新一期 | 男人在线天堂 | 日韩在线免费av | 亚洲狠狠 | 国产欧美综合视频 | 免费色播 | 国产精品午夜福利视频234区 | 翔田千里88av中文字幕 | 四虎永久在线观看 | 国产三级伦理片 | 中文字幕国产在线 | 国产精品无码影院 | 国产淫片 | 黄色网av| 日韩精品一区二区三区丰满 | 成人av免费在线看 | 波多野结衣亚洲一区 | 天天爽夜夜 | 欧美日韩一区二区三区不卡视频 | 欧美色就是色 | 亚洲乱码一区二区三区在线观看 | 蜜桃久久久aaaa成人网一区 | 中字av在线 | 97久久国产亚洲精品超碰热 | 91精品国产综合久久久久久 | 友田真希一区二区 | 韩漫动漫免费大全在线观看 | 亚洲一区二区 | 在线h片| 久久久久亚洲av无码a片 | 在线视频97| 国产精品情侣 | 国产女主播一区二区三区 | 九九九九九精品 | 久久艹在线观看 | 久久草网站 | 韩国av中文字幕 | 国外av在线| 国产在线中文字幕 | 成人黄色免费在线观看 | 欧美hdxxxx| 亚洲国产成人精品视频 | 成人污污视频 | 欧美私人影院 | 精品久久久久久中文字幕人妻最新 | a级片免费播放 | 国产大片一区 | h亚洲| 中文字幕乱码无码人妻系列蜜桃 | 天堂在线中文网 | 少妇高潮一区二区三区在线 | 成人依人 | 久久久久女教师免费一区 | 99久久婷婷国产一区二区三区 | 色播在线观看 | 日韩最新在线 | 亚洲视频在线观看网站 | 欧美亚洲一区二区在线观看 | 网站毛片 | 免费观看亚洲视频 | 天天干天天干天天干 | 成人污在线观看 | 欧美色图激情小说 | 国内成人自拍视频 | 99视频国产精品免费观看a | 黄色片网站大全 | 日本特级片 | 肥熟女一区二区三肥熟女 | aaaaav| 国产精品高潮呻吟久久av野狼 | 国产精品无码免费在线观看 | 青青草视频网站 | 国产第100页 | 九九视频免费在线观看 | 国产妇女乱一性一交 | 波多野结衣在线一区 | 特级西西444www大精品视频免费看 | 久久久精品人妻一区二区三区色秀 | 丁香婷婷激情 | 一本大道久久久久精品嫩草 | 中文字幕在线三区 | 天堂成人国产精品一区 | 天天综合久久综合 | 在线观看免费高清在线观看 | 日韩高清三区 | 国产欧美日韩精品在线 | 欧美熟妇久久久久 |