1105_4.4 汽泡圖

1105_4.4 汽泡圖
Photo by Alex Alvarez / Unsplash

這些圖表展示的是從 2000 年到 2024 年之間每一年第一個交易日,各半導體公司收盤價變動百分比(Y 軸)與市值(氣泡大小及顏色)的情況。

解釋:

  1. X 軸:每個圖表的 X 軸展示的是各半導體公司的縮寫(company_abbr),如 TSMC、NVIDIA、Intel 等公司。
  2. Y 軸:Y 軸展示的是各公司當日的收盤價變動百分比(Close Price Change%)。這個百分比反映了該公司與前一日相比的股價波動。數值為正表示股價上升,數值為負表示股價下降。
  3. 氣泡大小:每個氣泡的大小代表了該公司在當年第一個交易日的市值(Market Cap),市值越大,氣泡越大。
  4. 顏色:氣泡的顏色也表示該公司的市值,從紫色到黃色(根據 viridis 色彩映射)。紫色表示市值較小,而黃色表示市值較大。

圖表中的趨勢觀察:

  • 市值變化:隨著時間推移,市值較大的公司(如 TSMC、NVIDIA、Samsung 等)的氣泡越來越大,特別是在近些年(2020 年後),可以看到這些公司市值不斷增大。
  • 股價變動:收盤價變動百分比在每年的圖中表現不同。有些年份有較大波動(如 2000 年和 2001 年),有些年份的變動幅度則較小(如 2010 年到 2015 年)。
  • 市值領先者:從 2020 年開始,TSMC、NVIDIA 和 Samsung 這些公司的氣泡顯著增大,表明這些公司在市值上的主導地位變得更加明顯。

結論:

這些圖表給出了一個視覺化的概覽,展示了過去 20 多年來,主要半導體公司市值的增長情況,以及它們股價在每年第一個交易日的波動。透過這些圖表,你可以看到:

  • 各大公司市值的相對變化趨勢。
  • 每年市場對各公司的變動反應。
import pandas as pd
import matplotlib.pyplot as plt

# 讀取 CSV 文件
df = pd.read_csv('/content/drive/My Drive/Semicon_Analysis/semiconductor_merged_1017.csv')

# 確保日期格式正確
df['Date'] = pd.to_datetime(df['Date'])

# 新增 'Year' 欄位
df['Year'] = df['Date'].dt.year

# 過濾出 2020 年以後每年第一天的數據
df_first_day_each_year = df[df['Date'].dt.month == 1].groupby(['Year', 'company_abbr']).first().reset_index()

# 過濾出 2000 年以後的數據
df_filtered = df_first_day_each_year[df_first_day_each_year['Year'] >= 2000]

# 設置圖表佈局,每行 3 張圖表
years = df_filtered['Year'].unique()
rows = len(years) // 3 + (len(years) % 3 > 0)
fig, axes = plt.subplots(rows, 3, figsize=(18, 6 * rows))

# 繪製每一年第一天的汽泡圖
for i, year in enumerate(years):
    row, col = divmod(i, 3)
    year_df = df_filtered[df_filtered['Year'] == year]
    
    # 取得公司代號並轉換為索引
    companies = year_df['company_abbr']
    x_indices = range(len(companies))
    
    # X 軸為公司代號索引,Y 軸為 Close Price Change%,氣泡大小為 Market Cap (USD)
    scatter = axes[row, col].scatter(x=x_indices, 
                                     y=year_df['Close_Price_Change%'], 
                                     s=year_df['Market Cap (USD)'] / 1e9,  # Market Cap 除以 1e9 調整為億美元
                                     alpha=0.5,  # 氣泡透明度
                                     c=year_df['Market Cap (USD)'], cmap='viridis')  # 用 Market Cap 映射顏色

    # 加上標籤和標題
    axes[row, col].set_title(f'{year} First Day - Close Price Change% vs Market Cap')
    axes[row, col].set_xlabel('Company Abbr')
    axes[row, col].set_ylabel('Close Price Change%')

    # 調整 X 軸標籤顯示公司簡稱
    axes[row, col].set_xticks(x_indices)
    axes[row, col].set_xticklabels(companies, rotation=90)

    # 為每個子圖添加單獨的顏色條
    fig.colorbar(scatter, ax=axes[row, col], label='Market Cap (USD)', orientation='vertical')

# 如果總圖數不足3的倍數,將剩餘的空圖關閉
for i in range(len(years), rows * 3):
    fig.delaxes(axes.flatten()[i])

# 調整佈局
plt.tight_layout()
plt.show()