TQC+ 網頁資料擷取與分析_Python_402_市場成交行情:折線圖

文、意如

1. 題目說明:

請開啟PYD04.py檔案,依下列題意進行組合改寫,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。

2. 設計說明:

請讀取果菜市場香蕉成交行情read.csv資料,主要有兩個欄位:成交日期、成交平均價。再以matplotlib輸出折線圖chart.png,輸出圖表的參數如下:

  • 顯示圖例(legend):banana
  • 圖表標題:Market Average Price
  • 以成交日期為X軸,X軸名稱:date
  • 以成交平均價為Y軸,Y軸名稱:NT$
  • Y軸下限15、上限25
3. 輸入輸出:

輸入說明

讀取read.csv的內容

輸出說明

輸出chart.png圖檔


範例輸入

範例輸出

注意:
matplotlib套件的版本,會造成輸出的圖檔有差異,但不影響評分的準確性。
Code Judger平台會將您的程式,於伺服器中運行輸出圖檔進行評分。


題目提示:

檔案連結:read.csv (請另存檔案,必須與程式同一資料夾)

# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動

# 載入 matplotlib.pyplot 並縮寫為 plt
import ___ as ___
# 載入 csv 模組
import ___

x = []
y = []

# 讀入 read.csv
with open('___', 'r', encoding='utf8') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    for row in plots:
        x.append(row[0])
        y.append(float(row[1]))

x_ticks = range(1, len(x) + 1)
plt.___(x_ticks, y, label=___)
plt.xticks(x_ticks, x)
plt.xlabel(___)
plt.ylabel(___)
plt.ylim(___)
# 添加圖表標題 title()
plt.___('Market Average Price')
plt.legend()
# 使用 savefig() 函數
plt.___('chart.png')
plt.close()

參考解答

# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
# --結束--批改評分使用,請勿變動

import matplotlib.pyplot as plt
import csv
# 載入CSV檔案並讀取數據
x,y = [],[]

# 使用csv.reader讀取CSV檔案,以逗號為分隔符號
with open('read.csv', 'r', encoding='utf8') as fp:
    plots = csv.reader(fp, delimiter=',')
    for row in plots:
        x.append(row[0]) # 將CSV檔案的第一欄(日期)加入x列表
        y.append(float(row[1]))# 將CSV檔案的第二欄(價格)轉換為浮點數後加入y列表

x_ticks = range(1, len(x) + 1)# 設定X軸的刻度標籤為日期

"""
print("x_ticks",x_ticks) # range(1, 8)
print("x",x) #['06/14', '06/15', '06/16', '06/17', '06/18', '06/21', '06/22']
print("y",y) #y[18.1, 19.5, 21.0, 17.4, 16.9, 18.0, 16.3]
"""

# 使用Matplotlib繪製折線圖
plt.plot(x_ticks, y, label="banana")  # 繪製折線圖,x軸刻度標籤為日期,y軸數據為價格,並設定圖例為"banana"
plt.xticks(x_ticks, x)               # 設定X軸的刻度標籤為日期
plt.xlabel("date")                   # 設定X軸標題為"date"
plt.ylabel("NT$")                   # 設定Y軸標題為"NT$"
plt.ylim(15, 25)                     # 設定Y軸的數值範圍
plt.title('Market Average Price')     # 設定圖表標題為"Market Average Price"
plt.legend()                         # 顯示圖例

plt.savefig('chart.png')
# 關閉Matplotlib圖表
plt.close()

參考
 

Yiru@Studio - 關於我 - 意如