TQC+ 網頁資料擷取與分析_Python_405_樣本:直方圖與散佈圖

文、意如

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 - 關於我 - 意如