Python 繪圖

Undefined443發表於2024-06-07

折線圖

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 設定字型族:英文使用 Times New Roman,中文使用 SimSun
plt.rcParams['font.family'] = ['Times New Roman', 'SimSun']

# 資料
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 建立繪圖
plt.plot(x, y, marker='o', linestyle='-', color='b', label='Line 1')

# 新增標題和標籤
plt.title('簡單線圖 Simple Line Plot')
plt.xlabel('X 軸 X Axis')
plt.ylabel('Y 軸 Y Axis')

# 顯示圖例
plt.legend()

# 顯示圖形
plt.show()

散點圖

import seaborn as sns
import matplotlib.pyplot as plt

# 設定字型族:英文使用 Times New Roman,中文使用 SimSun
plt.rcParams['font.family'] = ['Times New Roman', 'SimSun']

# 示例資料集
tips = sns.load_dataset("tips")

# 繪製散點圖
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")

# 新增標題
plt.title('小費和總賬單的散點圖 Scatter Plot of Total Bill vs Tip')

# 顯示圖形
plt.show()

示例

折線圖

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = ['Times New Roman', 'SimSun'] # 設定字型族
plt.rcParams['axes.unicode_minus'] = False # 顯示負號

x = np.array([3,5,7,9,11,13,15,17,19,21])

A = np.array([0.9708, 0.6429, 1, 0.8333, 0.8841, 0.5867, 0.9352, 0.8000, 0.9359, 0.9405])
B =  np.array([0.9708, 0.6558, 1, 0.8095, 0.8913, 0.5950, 0.9352, 0.8000, 0.9359, 0.9419])
C = np.array([0.9657, 0.6688, 0.9855, 0.7881, 0.8667, 0.5952, 0.9361, 0.7848, 0.9244, 0.9221])
D = np.array([0.9664, 0.6701, 0.9884, 0.7929, 0.8790, 0.6072, 0.9352, 0.7920, 0.9170, 0.9254])

# label 在圖示(legend)中顯示。若為數學公式,則最好在字串前後新增 $ 符號
# color: b:blue, g:green, r:red, c:cyan, m:magenta, y:yellow, k:black, w:white
# 線型:- -- -. : ,
# marker: . , o v < * + 1

plt.figure(figsize=(10,5))
plt.grid(linestyle="--") # 設定背景網格線為虛線
ax = plt.gca()

ax.spines['top'].set_visible(False) # 去掉上邊框
ax.spines['right'].set_visible(False) # 去掉右邊框

# A 圖
plt.plot(x, A, color="black", label="A algorithm", linewidth=1.5)
# B 圖
plt.plot(x, B, "k--", label="B algorithm", linewidth=1.5)
# C 圖
plt.plot(x, C, color="red", label="C algorithm", linewidth=1.5)
# D 圖
plt.plot(x, D, "r--", label="D algorithm", linewidth=1.5)

group_labels=['dataset1', 'dataset2', 'dataset3', 'dataset4', 'dataset5', ' dataset6', 'dataset7', 'dataset8', 'dataset9', 'dataset10'] # X 軸刻度的標識

plt.xticks(x, group_labels, fontsize=12, fontweight='bold') # 預設字型大小為 10
plt.yticks(fontsize=12, fontweight='bold')

plt.title("example", fontsize=12, fontweight='bold') # 預設字型大小為 12

plt.xlabel("Data sets", fontsize=13, fontweight='bold')
plt.ylabel("Accuracy", fontsize=13, fontweight='bold')

plt.xlim(3,21) # 設定 x 軸的範圍
# plt.ylim(0.5,1)

# plt.legend() # 顯示各曲線的圖例
plt.legend(loc=0, numpoints=1)
leg = plt.gca().get_legend()
ltext = leg.get_texts()
plt.setp(ltext, fontsize=12, fontweight='bold') # 設定圖例字型的大小和粗細

plt.savefig('filename.svg') # 建議儲存為 svg 格式,再用 inkscape 轉為向量圖 emf 後插入 word 中
plt.show()

參考:畫論文折線圖、曲線圖?幾個程式碼模板輕鬆搞定!

相關文章