更新於 2024/04/03閱讀時間約 4 分鐘

如何用Python繪製折線圖

首先這是我的資料-台灣好行的公開資料:

import pandas as pd
data = pd.read_csv("opendata.csv")
raw-image

首先,因為資料中113年度的資料只有一月,所以我打算刪除年度為113年的資料:

#建立一個我們不要的年份的行的index的List
ListYearDrop = []

#用列舉的方法建立一個列舉每個年的List,index從0開始
#再用for迴圈,讓每次讀到指定的年份時,就將該年份的index記錄下來
for index, value in enumerate(data["年度"],0):
    if value == 113:
        ListYearDrop.append(index)

#用drop,丟掉我們不要的年份該行的資料
data.drop(index=ListYearDrop,inplace=True)

資料準備好後,我們就可以開始繪圖了

import matplotlib

#選擇中文字體
matplotlib.rc("font",family="Microsoft YaHei")

from matplotlib import pyplot as plt

#繪製圖表大小
plt.figure(figsize=(16,4))

#繪製一個位於包含1X1個子圖的圖且位置在(0,0)的子圖
ax0 = plt.subplot2grid((1,1),(0,0),colspan=1,rowspan=1)

#--------------------------------

#建立x軸資料
ax0_x = data["年度"].astype("str") + "年\n" + data["月份"].astype("str") + "月"

#建立y軸資料(這次我們想呈現兩條折線)
ax0_y1 = data["本月累計搭乘人次"]/10000
ax0_y2 = data["本月電子票證累計使用人次"]/10000

#--------------------------------

##繪製第一條折線圖

#繪圖
ax0.plot(ax0_x,ax0_y1,color="green",label="本月累計搭乘人次")

#決定y軸座標軸上下限
ax0.set_ylim(0,500)

#決定y軸座標軸座標與標籤
ax0.set_yticks([100,200,300,400,500])
ax0.set_yticklabels(["100萬","200萬","300萬","400萬","500萬"])

#--------------------------------

##繪製第二條折線圖
ax0.plot(ax0_x,ax0_y2,color="lightgray",label="本月電子票證累計使用人次")

#--------------------------------

#繪製圖例
ax0.legend(bbox_to_anchor=(0.2,0.95),prop = {"size":10})

#繪製平均線
ax0.hlines(ax0_y1.mean(),0,len(ax0_x)-1,linestyles="--",color="green")
ax0.text(0,ax0_y1.mean()+10,"平均" + str(ax0_y1.mean().round(2)) + "萬",color="green")

ax0.hlines(ax0_y2.mean(),0,len(ax0_x)-1,linestyles="--",colors="lightgray")
ax0.text(0,ax0_y2.mean()+10,"平均" + str(ax0_y2.mean().round(2)) + "萬",color="lightgray")

#設定圖的標題
plt.title("台灣好行:每月累計搭乘人次與電子票證累計使用人次")

plt.tight_layout()
























分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.