文、意如
1. 題目說明:
請開啟PYD04.py檔案,依下列題意進行組合改寫,使輸出值符合題意要求。作答完成請另存新檔為PYA04.py再進行評分。
2. 設計說明:
依下列要求以matplotlib輸出chart.png圖檔:
- 利用程式內提供的第一組sample1與第二組sample2數據輸出左右兩個圖,左圖為直方圖(histogram),右圖為散佈圖(scatter)。
- 直方圖疊合兩個直方圖,兩圖均請在-3~+3間均勻間隔分為100格,透明度(alpha)均為0.5。在左上角放置圖例,sample1的標記為samples 1,sample2的標記為samples 2。
- 散佈圖以 sample1 作為X軸資料、sample2作為Y軸資料,透明度設為 0.2。
3. 輸入輸出:
輸入說明
無
輸出說明
輸出chart.png圖檔
範例輸入
無
範例輸出
參考程式碼:
# --開始--批改評分使用,請勿變動
import matplotlib as mpl
mpl.use('Agg')
set_seed = 123
# --結束--批改評分使用,請勿變動
# 載入 numpy 模組並縮寫為 np
import ___ as ___
# 載入 matplotlib.pyplot 並縮寫為 plt
import ___ as ___
samples_1 = np.random.RandomState(set_seed).normal(loc=1, scale=.5, size=1000)
samples_2 = np.random.RandomState(set_seed).standard_t(df=10, size=1000)
bins = np.linspace(___, ___, ___)
# 第一個子圖
plt.subplot(___, ___, ___)
plt.hist(___, bins=___, alpha=___, label='___')
plt.hist(___, bins=___, alpha=___, label='___')
# 在左上角 upper left 放置圖例 legend
plt.___(loc='___')
# 第二個子圖
plt.subplot(___, ___, ___)
plt.scatter(___, ___, alpha=___)
plt.savefig(___)
plt.close()
參考解答:
# 匯入所需的模組
import matplotlib as mpl
mpl.use('Agg') # 設定Agg後端,用於非互動式繪圖,批改評分使用
# 載入 numpy 模組並縮寫為 np
import numpy as np
# 載入 matplotlib.pyplot 並縮寫為 plt
import matplotlib.pyplot as plt
# 設定隨機種子
set_seed = 123
# 生成兩組隨機數據樣本
samples_1 = np.random.RandomState(set_seed).normal(loc=1, scale=0.5, size=1000)
samples_2 = np.random.RandomState(set_seed).standard_t(df=10, size=1000)
# 設定直方圖的區間
bins = np.linspace(-3, 3, 100)
# 創建第一個子圖 2x2的表格
plt.subplot(2, 2, 1)
#第一個數字 2 表示創建的圖形分為2行
#第二個數字 2 表示創建的圖形分為2列
#第三個數字 1 表示當前操作的是第1個子圖(左上的圖)
plt.hist(samples_1, bins=bins, alpha=0.5, label='samples 1') # 繪製直方圖並設定透明度與標籤
plt.hist(samples_2, bins=bins, alpha=0.5, label='samples 2')
plt.legend(loc='upper left') # 放置圖例在左上角
# 創建第二個子圖 (右邊的圖)
plt.subplot(1, 2, 2)
plt.scatter(samples_1, samples_2, alpha=0.2) # 繪製散點圖,設定透明度
# 儲存圖片
plt.savefig('chart.png')
# 關閉當前的圖形,以釋放資源
plt.close()
Yiru@Studio - 關於我 - 意如