图示
代码
import numpy as np
import matplotlib.pyplot as plt
def plot_two_dim(x, y, id2Name, xLabel, yLabel):
"""
功能: 绘制二维待标签散点图
输入:
x:np,(N) # 散点横坐标
y:np,(N) # 散点纵坐标
id2Name:dict, # 散点标签
xLabel:string,(1) # x轴标签
yLabel:string,(1) # y轴标签
"""
C = max(x) - min(x)
R = max(y) - min(y)
fig = plt.figure(figsize=(C, R))
# 给Y坐标赋值为0
N = len(x)
# 生成散点标签
titles = [id2Name[i] for i in range(N)]
# 绘制散点
ax = fig.add_subplot(111, frameon=True)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.scatter(x,y,c='g')
ax.yaxis.set_ticks_position('left')
# 绘制标签
for i in range(N):
ax.annotate(titles[i], (x[i], y[i]))
# 显示xLabel
ax.set(xlabel=xLabel, ylabel=yLabel)
plt.show()
使用
x = np.array([-0.8266125, 4.319269, 0.42260137, -3.9152584 ])
y = np.array([-0.28433195, 1.581891, -2.800442, 1.502883 ])
id2Name = {0: 'England', 1: 'N Ireland', 2: 'Scotland', 3: 'Wales'}
import numpy as np
import matplotlib.pyplot as plt
plot_two_dim(x, y, id2Name, 'pca1', 'pca2')