Matplotlib相關知識
Matplotlib相關操作:
import numpy as np
from matplotlib import pyplot as pltx = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)# 使用紅色虛線,圓點標記,線寬1.5,標記大小為6繪制sin
plt.plot(x, y1,color="red", # 紅色linestyle="--", # 虛線marker="o", # 圓點標記markersize=6, # 標記大小為6linewidth=1.5 # 線寬1.5)#使用綠色實線,方形標記,線寬為2,標記大小為8繪制cos
plt.plot(x, y2,color="green", # 綠色linestyle="-", # 實線marker="s", # 方形標記markersize=8, # 標記大小為8linewidth=2 # 線寬為2)#顯示圖像
plt.show()
import numpy as np
from matplotlib import pyplot as plt# 生成100個隨機點
x = np.random.rand(100)
y = np.random.rand(100)# 點的大小根據x坐標值線性變化
sizes = 500 * x# 點的顏色根據y坐標使用'plasma'顏色映射
# 透明度為0.6,邊緣顏色為黑色
colors = plt.cm.plasma(y)
plt.scatter(x, y,s=sizes, # 大小c=colors, # 顏色alpha=0.6, # 透明度edgecolors='black' # 邊緣顏色)# 顯示圖像
plt.show()
import matplotlib.pyplot as plt
import numpy as npcategories = ['Apple', 'Banana', 'Cherry', 'Date', 'Eggplant']
values1 = [30, 25, 40, 15, 20]
values2 = [20, 30, 35, 25, 10]x = np.arange(len(categories))
width = 0.35 # 條形寬度# 繪制兩組并列的條形圖,第一組顏色為橙色,第二組顏色為紫色
# 條形寬度為0.35, 添加圖例
plt.bar(x - width/2, values1, width=width, color='orange', label='Group 1')
plt.bar(x + width/2, values2, width=width, color='purple', label='Group 2')
# 設置x軸刻度
plt.xticks(x, categories)plt.legend()
plt.show()
from matplotlib import pyplot as plt# 數據
sizes = [20, 30, 25, 15, 10]
labels = ['Category1', 'Category2', 'Category3', 'Category4', 'Category5']"""
繪制餅圖,要求:
突出顯示 Category2
顯示百分比,保留兩位小數
開始角度為 120 度
添加陰影
扇形邊緣顏色為黑色,線寬為1
"""plt.pie(sizes,labels=labels, # 餅圖標簽autopct='%1.2f%%', # 顯示百分比startangle=120, # 開始角度shadow=True, # 添加陰影wedgeprops={'edgecolor': 'black', 'linewidth': 1} # 邊緣顏色和線寬)plt.show()
import numpy as np
from matplotlib import pyplot as plt# 生成2000個服從正態分布的隨機數
data = np.random.randn(2000)# 繪制直方圖,箱數為 40,顏色為橙色,透明度為0.6
# #設置合適的 x軸和 y軸標簽以及標題
plt.hist(data,bins=40, # 設置箱數為40color='orange', # 設置顏色為橙色alpha=0.6 # 設置透明度為0.6)plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Random Data')
plt.show()
import numpy as np
from matplotlib import pyplot as plt#生成三組數據,分別服從均值為0、1、2,標準差為1 的正態分布,每組150個數據
data1 = np.random.normal(0, 1, 150)
data2 = np.random.normal(1, 1, 150)
data3 = np.random.normal(2, 1, 150)
data = [data1, data2, data3]#繪制水平箱線圖,填充箱體顏色為綠色
plt.boxplot(data,vert=False, # 設置箱線圖方向為水平patch_artist=True, # 填充箱體顏色boxprops={'facecolor': 'green'} # 設置箱體顏色為綠色)#設置合適的 x軸和 y 軸標簽以及標題
plt.xlabel('Value')
plt.ylabel('Group')
plt.title('Box Plot of Three Groups')
plt.show()
import matplotlib.pyplot as plt
import numpy as np#生成數據
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)#創建一個1行3列的子圖
fig, axes = plt.subplots(1,3)
axes[0].plot(x, y1)
axes[1].plot(x, y2)
axes[2].plot(x, y3)
axes[0].set_title('Sine')
axes[1].set_title('Cosine')
axes[2].set_title('Tangent')
plt.tight_layout()
plt.show()
附加:
import numpy as np
import matplotlib.pyplot as plt# 原始圖像生成
# 創建一個700×700的圖像數組(RGB),初始全部為黑色
image_arr = np.zeros((700, 700, 3), dtype=np.uint8)# 定義每個格子的尺寸
cell_size = 100
line_width = 2 # 網格線寬度# 繪制白色網格線
# 橫向網格線
for i in range(0, 701, cell_size):image_arr[i:min(i + line_width, 700), :, :] = 255
# 縱向網格線
for j in range(0, 701, cell_size):image_arr[:, j:min(j + line_width, 700), :] = 255# 利用雙重循環遍歷每個網格(7×7格子)
# 如果滿足條件:對角線處格子 -> 填充紅色
for i in range(1, 7): # 行索引:1~6for j in range(1, 7): # 列索引:1~6r_start = i * cell_size + line_widthr_end = (i + 1) * cell_size - line_widthc_start = j * cell_size + line_widthc_end = (j + 1) * cell_size - line_widthif (i == j or (i + j == 6)) and not (i == 6 and j == 6):image_arr[r_start:r_end, c_start:c_end, 0] = 255 # Rimage_arr[r_start:r_end, c_start:c_end, 1] = 0 # Gimage_arr[r_start:r_end, c_start:c_end, 2] = 0 # B# 分離并可視化 RGB 三個通道
# 方法一:為每個通道創建一個與原圖像相同大小的新數組,只保留該通道值,其他通道置0
image_red = np.zeros_like(image_arr)
image_green = np.zeros_like(image_arr)
image_blue = np.zeros_like(image_arr)# 分別拷貝對應通道
image_red[:, :, 0] = image_arr[:, :, 0] # R通道
image_green[:, :, 1] = image_arr[:, :, 1] # G通道
image_blue[:, :, 2] = image_arr[:, :, 2] # B通道fig, axes = plt.subplots(1, 4, figsize=(12, 4))
axes[0].imshow(image_arr)
axes[0].set_title("image")axes[1].imshow(image_red)
axes[1].set_title("image_red")axes[2].imshow(image_green)
axes[2].set_title("image_green")axes[3].imshow(image_blue)
axes[3].set_title("image_blue")for ax in axes:ax.axis('off')plt.tight_layout()
plt.show()