如何使用python绘制2D向量图

1️⃣如何绘制箭头
使用plt.arrow生成箭头,前两个参数为起点,后两个参数为偏移量,可以设置箭头的大小宽度,以及箭头和线条的颜色。

plt.arrow(0, 0, vec[0], vec[1], head_width=0.1, head_length=0.1, fc=color[i], ec=color[i])

2️⃣如何设置向量名称
可以使用plt.annotate设置箭头的标签,标签名可以使用Latex输入。

plt.annotate(labels[i], xy=vec, xytext=(vec[0]+0.2, vec[1]-0.1))

输入为名称,向量位置,以及标签对应位置
3️⃣完整代码

# 二维向量
vectors = [[4, 0], [4.3, 0.4], [2, 3],[3.8,2.3],[6.5,2]]

# 对应的标签
labels = [r'$\vec{G}_t$', '',r'$\vec{W}_1^’$', '', r'$\vec{W}_2^’$']

color = ['black', 'blue', 'red', 'blue', 'red']

# 绘制向量和标签
for i, vec in enumerate(vectors):
    plt.annotate(labels[i], xy=vec, xytext=(vec[0]+0.2, vec[1]-0.1))
    # 绘制箭头
    plt.arrow(0, 0, vec[0], vec[1], head_width=0.1, head_length=0.1, fc=color[i], ec=color[i])

# 设置坐标轴范围和标题
plt.xlim(-1, 7)
plt.ylim(-1, 5)

# 去除坐标辅助线
ax = plt.gca()  # 获取当前坐标轴对象
ax.spines['top'].set_visible(False)  # 隐藏顶部边框
ax.spines['right'].set_visible(False)  # 隐藏右侧边框
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.xaxis.set_ticks_position('none')  # 隐藏x轴刻度
ax.yaxis.set_ticks_position('none')  # 隐藏y轴刻度
ax.tick_params(axis='both', which='both', length=0, labelsize=0)

# 显示图形
plt.show()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我可以给你一些指导。首先,你需要有一个.mat格式的高光谱像数据集,并且已经将它加载到你的 Python 程序中。然后,你可以使用 scikit-learn 库中的 SVC(支持向量机)函数来构建一个支持向量机模型,并将你的像数据作为输入。接下来,你可以使用该模型对像进行分类。 下面是一段使用 SVC 函数进行分类的示例代码: ``` from sklearn import svm # 加载像数据 X = ... Y = ... # 构建支持向量机模型 clf = svm.SVC() # 训练模型 clf.fit(X, Y) # 使用模型进行分类 predictions = clf.predict(X) ``` 至于可视化,你可以使用 matplotlib 库中的绘函数来绘制分类结果。例如,你可以使用 scatter() 函数来绘制散点,并使用不同的颜色来区分不同的类别。 示例代码如下: ``` import matplotlib.pyplot as plt # 绘制散点 plt.scatter(X[:, 0], X[:, 1], c=predictions) # 显示像 plt.show() ``` 希望这些信息能帮到你。 ### 回答2: 使用Python实现使用支持向量机(SVM)对.mat格式的高光谱像进行分类并可视化的步骤如下: 1. 导入所需的库和模块: ``` import scipy.io import numpy as np import matplotlib.pyplot as plt from sklearn import svm ``` 2. 加载.mat格式的高光谱像数据: ``` data = scipy.io.loadmat('image.mat') X = data['data'] # 特征数据 y = data['label'] # 标签数据 ``` 3. 将数据分为训练集和测试集: ``` train_ratio = 0.7 # 训练集比例为70% train_size = int(X.shape[0] * train_ratio) X_train = X[:train_size] y_train = y[:train_size] X_test = X[train_size:] y_test = y[train_size:] ``` 4. 创建SVM分类器并训练模型: ``` clf = svm.SVC() clf.fit(X_train, y_train) ``` 5. 对测试集进行预测: ``` y_pred = clf.predict(X_test) ``` 6. 对分类结果进行可视化: ``` # 创建一个2D像,并将分类结果可视化 image = np.zeros((data['height'], data['width'], 3)) # 创建一个空像,高度为data['height'],宽度为data['width'],通道数为3(R,G,B) for i in range(data['height']): for j in range(data['width']): label = y_pred[i * data['width'] + j] # 获取像素点的预测标签 if label == 0: # 如果预测为类别0 image[i, j, :] = [255, 0, 0] # 标记为红色 elif label == 1: # 如果预测为类别1 image[i, j, :] = [0, 255, 0] # 标记为绿色 elif label == 2: # 如果预测为类别2 image[i, j, :] = [0, 0, 255] # 标记为蓝色 plt.imshow(image) plt.show() ``` 以上就是使用Python实现使用支持向量机对.mat格式的高光谱像进行分类并可视化的步骤。可以根据实际情况进行相应的调整和优化。 ### 回答3: 使用Python实现使用支持向量机(Support Vector Machine,简称SVM)对.mat格式的高光谱像进行分类并可视化的步骤如下: 1. 导入所需的库和模块: ```python import scipy.io as sio import numpy as np import matplotlib.pyplot as plt from sklearn.svm import SVC ``` 2. 加载.mat格式的高光谱像数据集: ```python data = sio.loadmat('high_spectral_image.mat') X = data['X'] y = data['y'].ravel() ``` 3. 划分训练集和测试集: ```python train_ratio = 0.8 # 训练集比例 train_size = int(train_ratio * X.shape[0]) X_train, X_test = X[:train_size, :], X[train_size:, :] y_train, y_test = y[:train_size], y[train_size:] ``` 4. 构建SVM分类器,并进行训练: ```python clf = SVC(kernel='linear') # 使用线性核函数的SVM分类器 clf.fit(X_train, y_train) ``` 5. 在测试集上进行预测: ```python y_pred = clf.predict(X_test) ``` 6. 可视化分类结果: ```python # 绘制真实类别 plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap='rainbow', alpha=0.5, label='True Class') # 绘制预测类别 plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, marker='x', cmap='rainbow', label='Predicted Class') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.legend() plt.show() ``` 以上就是使用Python实现使用支持向量机对.mat格式的高光谱像进行分类并可视化的步骤。通过这些步骤,我们可以使用支持向量机对高光谱像进行分类,并通过可视化展示分类结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

volcanical

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值