比較(五)利用python繪制棒棒糖圖

比較(五)利用python繪制棒棒糖圖

棒棒糖圖(Lollipop plot)簡介

1

棒棒糖圖實際上是修飾后的條形圖。當在處理大量的值,并且當這些值都很高時,棒棒糖圖就很有用。

快速繪制

  1. 基于matplotlib

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt# 自定義數據
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'values':np.random.uniform(size=20) })# 按值重新排序
    ordered_df = df.sort_values(by='values')
    my_range=range(1,len(df.index)+1)# 利用stem(莖葉圖)快速繪制
    plt.stem(ordered_df['values'])
    plt.xticks( my_range, ordered_df['group'])plt.show()
    

    2

定制多樣化的棒棒糖圖

自定義棒棒糖圖一般是結合使用場景對相關參數進行修改,并輔以其他的繪圖知識。參數信息可以通過官網進行查看,其他的繪圖知識則更多來源于實戰經驗,大家不妨將接下來的繪圖作為一種學習經驗,以便于日后總結。

matplotlib主要利用stem繪制棒棒糖圖,可以通過matplotlib.pyplot.stem了解更多用法

  1. 修改參數

    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽# 自定義數據
    values = np.random.uniform(size=50)# 初始化布局
    fig = plt.figure(figsize=(12,6))# 隱藏標記
    plt.subplot(2, 3, 1) 
    plt.stem(values, markerfmt=' ', bottom=0.5)
    plt.title('隱藏標記')# 隱藏基線
    plt.subplot(2, 3, 2) 
    plt.stem(values, basefmt=" ")
    plt.title('隱藏基線')# 自定義基線位置
    plt.subplot(2, 3, 3) 
    plt.stem(values, markerfmt=' ', bottom=0.5)
    plt.title('自定義基線位置')# 通過獲取stem返回值獲取(markers, stemlines, baseline),并進行自定義操作
    # 獲取markers并自定義標記
    plt.subplot(2, 3, 4) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(markers, marker='D', markersize=10, markeredgecolor="orange", markeredgewidth=2)
    plt.title('獲取markers并自定義標記')# 獲取baseline并自定義基線
    plt.subplot(2, 3, 5) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(baseline, linestyle="-", color="grey", linewidth=6)
    plt.title('獲取baseline并自定義基線')# 獲取baseline并自定義莖葉
    plt.subplot(2, 3, 6) 
    (markers, stemlines, baseline) = plt.stem(values)
    plt.setp(stemlines, linestyle="-", color="olive", linewidth=0.5 )
    plt.title('獲取baseline并自定義莖葉')plt.tight_layout()
    plt.show()
    

    3

  2. 水平棒棒糖圖

    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽# 自定義數據
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'values':np.random.uniform(size=20) })# 按值重新排序
    ordered_df = df.sort_values(by='values')
    my_range=range(1,len(df.index)+1)# 自定義需要重點突出的數據
    my_color=np.where(ordered_df ['group']=='B', 'orange', 'skyblue')
    my_size=np.where(ordered_df ['group']=='B', 70, 30)# 初始化布局
    fig = plt.figure(figsize=(12,4))# 水平棒棒糖圖
    plt.subplot(1, 2, 1) 
    plt.hlines(y=my_range, xmin=0, xmax=ordered_df['values'], color='skyblue')
    plt.plot(ordered_df['values'], my_range, "o")
    plt.yticks(my_range, ordered_df['group'])
    plt.title('水平棒棒糖圖')# 水平棒棒糖圖-Highlight
    plt.subplot(1, 2, 2) 
    plt.hlines(y=my_range, xmin=0, xmax=ordered_df['values'], color=my_color, alpha=0.4)
    plt.scatter(ordered_df['values'], my_range, color=my_color, s=my_size, alpha=1)
    plt.yticks(my_range, ordered_df['group'])
    plt.title('水平棒棒糖圖-Highlight')plt.show()
    

    4

  3. 分組棒棒糖圖

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt# 自定義數據
    value1=np.random.uniform(size=20)
    value2=value1+np.random.uniform(size=20)/4
    df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'value1':value1 , 'value2':value2 })# 重新排序
    ordered_df = df.sort_values(by='value1')
    my_range=range(1,len(df.index)+1)# 繪制水平棒棒糖圖
    plt.hlines(y=my_range, xmin=ordered_df['value1'], xmax=ordered_df['value2'], color='grey', alpha=0.4)
    plt.scatter(ordered_df['value1'], my_range, color='skyblue', alpha=1, label='value1')
    plt.scatter(ordered_df['value2'], my_range, color='green', alpha=0.4 , label='value2')
    plt.legend()# 標題、軸標簽
    plt.yticks(my_range, ordered_df['group'])
    plt.title("Comparison of the value 1 and the value 2", loc='left')
    plt.xlabel('Value of the variables')
    plt.ylabel('Group')plt.show()
    

    5

  4. 顏色對比棒棒糖圖

    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as sns# 自定義數據
    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x) + np.random.uniform(size=len(x)) - 0.2# 自定義顏色:正值為橘色
    my_color = np.where(y>=0, 'orange', 'skyblue')# 繪制棒棒糖圖
    plt.vlines(x=x, ymin=0, ymax=y, color=my_color, alpha=0.4)
    plt.scatter(x, y, color=my_color, s=1, alpha=1)# 標題、軸標簽
    plt.title("Evolution of the value of ...", loc='left')
    plt.xlabel('Value of the variable')
    plt.ylabel('Group')plt.show()
    

    6

總結

以上通過matplotlib的stem快速繪制棒棒糖圖,也可以利用matplotlib的vlines(垂直線)+scatter(散點)構造各種各樣的棒棒糖圖。

共勉~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37600.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端環境1】安裝nvm

【前端環境1】安裝nvm 寫在最前面一、下載nvm二、安裝教程三、驗證nvm安裝 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻時光,感謝你的陪伴與支持 ~ 🚀 歡迎一起踏上探險之旅,挖掘無限可能,共同成…

狗都能看懂的Reinforcement Learning簡介

文章目錄 一、什么是強化學習二、強化學習的應用 一、什么是強化學習 強化學習的流程可以用上面這張圖來說明:智能體(Agent)對環境進行觀測,然后根據觀測結果(Observation / State)采取相應的動作&#xff…

實現Ubuntu計劃任務的反彈shell

一、實驗環境 Ubuntu:IP地址:192.168.223.156 Kali : IP地址:192.168.223.152 二、編寫crontab計劃任務 在Ubuntu的系統中使用crontab -e命令編寫計劃任務,如下所示: 作用:是將一個交互式的bash …

device_node和platform_device的生成流程

1. machine_desc的匹配 《這篇》有介紹DT_MACHINE_START的一些初始化操作,匹配上就會在后續的初始化中調用DT_MACHINE_START的成員來初始化系統的設備樹,時鐘,中斷等 start_kernelsetup_arch(&command_line);mdesc setup_machine_fdt(…

行列視報表系統制作的報表與廠級監控信息系統(SIS)系統中的報表有什么區別?

廠級監控信息系統是集過程實時監測、優化控制及生產過程管理為一體的廠級自動化信息系統,是處于DCS以及相關輔助程控系統與全廠管理信息系統之間的一套實時廠級監控信息系統,該產品也是本公司的一套獨立產品。 SIS系統中的報表只是其中的一個模塊&#…

混合云管道的未來:集成 MinIO、Tailscale 和 GitHub Actions

數據處理是現代軟件開發的基本實踐。它使團隊能夠自動收集、處理和存儲數據,確保高質量的數據和高效的處理。 在本文中,我們將探討如何建立一個全面的數據處理管道,重點介紹如何使用 Tailscale GitHub Action 進行安全網絡。此設置還將包含 …

植物大戰僵尸雜交版手機下載與安裝全攻略

植物大戰僵尸雜交版是一款深受玩家喜愛的策略冒險游戲,以其豐富的植物種類、多樣的關卡設計和趣味的玩法著稱。本文將為您提供詳細的下載與安裝教程,幫助您快速上手,享受游戲帶來的樂趣。 游戲簡介 植物大戰僵尸雜交版在傳統玩法的基礎上&a…

【機器學習】語音轉文字 - FunASR 的應用與實踐(speech to text)

本文將介紹 FunASR,一個多功能語音識別模型,包括其特點、使用方法以及在實際應用中的表現。我們將通過一個簡單的示例來展示如何使用 FunASR 將語音轉換為文字,并探討其在語音識別領域的應用前景。 一、引言 隨著人工智能技術的不斷發展&am…

linux的安全技術和防火墻

一、安全技術 1.入侵檢測系統:特點式不阻斷網絡訪問,主要式提供報警和事后監督,不主動介入,默默的看著你(相當于360安全衛士) 2.入侵防御系統:透明模式工作,對數據包,網…

平價高性價比藍牙耳機有哪些?盤點好用平價的藍牙耳機推薦

在當今快節奏的生活中,藍牙耳機已經成為人們日常生活中不可或缺的配件,它們不僅讓我們可以在行走、工作或者鍛煉時享受音樂,還提供了便利的通話功能。然而,市面上藍牙耳機種類繁多,價格相差甚遠,大家往往難…

走進開源企業 | 湖南大學OpenHarmony技術實訓活動在開鴻智谷順利舉辦!

6月24日-6月26日,2024開放原子校源行之湖南大學信息科學與工程學院師生走進開源企業實訓交流活動順利落下帷幕。湖南大學信息科學與工程學院的師生代表團一行90人參與了湖南開鴻智谷數字產業有限公司(以下簡稱“開鴻智谷”)與母公司拓維信息系…

HEC-HMS水文模型教程

原文鏈接:HEC-HMS水文模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247607904&idx5&sn1a210328a3fc8f941b433674d8fe2c85&chksmfa826787cdf5ee91d01b6981ebd89deac3e350d747d0fec45ce2ef75d7cb8009341c6f55114d&token90645021…

放射性單位請問放射性物質的單位cpm、dpm什么意思

放射性單位請問放射性物質的單位cpm、dpm什么意思?和Ci怎樣換算?現在做同位素,搞不清楚劑量了.  anse7esn 1年前 已收到2個回答舉報 贊 渡海 幼苗 共回答了22個問題采納率:90.9% 舉報 放射性活度單位 放射性核素在單位時間內發生衰變…

vue項目手機錄音

手機實現錄音功能&#xff0c;安卓和蘋果都可。功能&#xff0c;點擊開始錄制錄音后&#xff0c;隨時可以停止錄音&#xff0c;如果不點擊停止最多錄制15秒。 頁面結構 <!--音頻--> <div class"audio-box"><audio id"audioPlayer"controlsc…

修改element-ui日期下拉框datetimePicker的背景色樣式

如圖&#xff1a; 1、修改背景色 .el-date-picker.has-sidebar.has-time { background: #04308D; color: #fff; border: 1px solid #326AFF } .el-date-picker__header-label { color: #ffffff; } .el-date-table th { color: #fff; } .el-icon-d-arrow-left:before { color: …

從零搭建Java酒店預訂系統:實戰指南_01

項目介紹 一、 項目概述 項目背景: 模擬真實酒店預訂流程,實現核心功能角色設定: 顧客、前臺、后勤管理(可選:管理員)技術選型: Java + Spring Boot + 數據庫(MySQL)+ 前端框架(Vue.js/React等)二、 需求分析與功能設計 功能模塊劃分: 用戶模塊:用戶注冊、登錄、…

Postgres14.4(Docker安裝)

Postgres14.4&#xff08;Docker安裝&#xff09; 一&#xff0c;Docker拉取鏡像 docker pull postgres:14.4 #檢查鏡像是否拉取成功 docker images | grep postgres二&#xff0c;新建掛載目錄&#xff0c;并運行容器 mkdir -p /data/postgre/data chmod 777 /data/postgre…

AQS同步隊列、條件隊列源碼解析

AQS詳解 前言AQS幾個重要的內部屬性字段內部類 Node同步隊列 | 阻塞隊列等待隊列 | 條件隊列 重要方法執行鏈同步隊列的獲取、阻塞、喚醒加鎖代碼流程解鎖 條件隊列的獲取、阻塞、喚醒大體流程 調用await()方法1. 將節點加入到條件隊列2. 完全釋放獨占鎖3. 等待進入阻塞隊列4. …

【Python】探索 Pandas 中的 where 方法:條件篩選的利器

那年夏天我和你躲在 這一大片寧靜的海 直到后來我們都還在 對這個世界充滿期待 今年冬天你已經不在 我的心空出了一塊 很高興遇見你 讓我終究明白 回憶比真實精彩 &#x1f3b5; 王心凌《那年夏天寧靜的海》 在數據分析中&#xff0c;Pandas 是一個強大且…

小程序安卓手機點擊uni-data-select 下拉框選擇器會出現藍色陰影

解決方法&#xff1a;在導入的包中找到uni-data-select.vue&#xff0c;接著找到.uni-stat__select樣式&#xff0c;把cursor: pointer去掉。 如果出現穿透問題&#xff0c;uni-select__selector的z-index加高&#xff0c;默認是2。