如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點

更新於 發佈於 閱讀時間約 4 分鐘

首先這是我們的資料

import pandas as pd
data = pd.read_csv("太陽光電業務資訊.csv")
raw-image

再來我們修改與建立幾個會用到的欄位

data["總裝置容量kwp(萬)"] = (data["總裝置容量kwp"]/10000).round()
data["平均每件容量kwp(萬)"] = data["總裝置容量kwp(萬)"]/data["總件數"]

修改後的資料如下

raw-image

但因為資料的最後有一筆總計資料如下圖

raw-image


我們想把總計拿掉,不要出現在圖表中,所以先如下操作

#篩選出總計那一行,並取得總計的索引值
n = data["行政區別"][data["行政區別"].values == "總計"].index.astype(int)[0]
#將總計那一行拿掉
data.drop([n],inplace=True)

接著,我們就可以開始繪圖了:

import matplotlib

#設定中文字型
matplotlib.rc("font",family="Microsoft YaHei")

from matplotlib import pyplot as plt

#設定圖的大小
plt.figure(figsize=(8,8),facecolor="lightgray")

#設定子圖位置
ax0 = plt.subplot2grid((1,1),(0,0),colspan=1,rowspan=1)

#設定x、y變數
ax0_x = data["總裝置容量kwp(萬)"]
ax0_y = data["總件數"]

#建立隨著決定點的大小變化的函數
ax0_z = data["平均每件容量kwp(萬)"]/(data["平均每件容量kwp(萬)"].max())

#繪製散布圖
ax0.scatter(ax0_x,ax0_y,marker="o",s=ax0_z*500,alpha=0.5,color="orange",label="平均每件容量kwp(萬)")

#設定x、y座標軸名稱
ax0.set_xlabel("總裝置容量kwp(萬)")
ax0.set_ylabel("總件數")

#將【總裝置容量】、【總件數】最大值的兩個點,用箭頭標註出行政區別
for i in ["總裝置容量kwp(萬)","總件數"]:
    #篩選最大值的該筆資料並重設索引
    filter = (data[i]==data[i].max())
    data_arrow = data[filter].reset_index()
    #建立箭頭的座標與所屬行政區別的變數
    data_arrow_x =data_arrow["總裝置容量kwp(萬)"][0]
    data_arrow_y =data_arrow["總件數"][0]
    data_arrow_text = data_arrow["行政區別"][0]
    #箭頭設定函數
    ax0.annotate(
        #設定顯示文字
        text=data_arrow_text,
        #設定箭頭的頭的座標
        xy=(data_arrow_x,data_arrow_y),
        #設定顯示文字的座標
        xytext=(data_arrow_x-15,data_arrow_y),
        #設定箭頭相關屬性
        arrowprops=dict(
            arrowstyle = "->",
            color = "darkblue",
            )
        )
#設定圖例
ax0.legend()

#設定子圖標題
ax0.set_title("台南太陽光電業務資訊")

plt.tight_layout()
raw-image
avatar-img
4會員
60內容數
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
果農的沙龍 的其他內容
本文將介紹如何用Python繪製群組直條圖。
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
本文介紹如何用Python繪製散布圖與迴歸線
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
本文將介紹如何用Python繪製群組直條圖。
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
本文介紹如何用Python繪製散布圖與迴歸線
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。