plt.plot 显示图形 必须采用 numpy格式数据 tensor 数据不能画图吗?
时间: 2024-03-24 12:37:28 浏览: 16
在使用 Matplotlib 绘制图形时,通常需要将数据转换为 numpy 格式。但是,如果你使用的是 PyTorch 的 Tensor 数据,也可以很容易地将其转换为 numpy 格式来进行绘制。具体来说,你可以使用 `tensor.numpy()` 方法将 Tensor 转换为 numpy 数组,然后再使用 Matplotlib 绘制图形。以下是一个简单的示例代码:
```
import torch
import matplotlib.pyplot as plt
# 创建一个 Tensor 数据
data = torch.randn(100)
# 将 Tensor 数据转换为 numpy 格式
data_np = data.numpy()
# 绘制直方图
plt.hist(data_np, bins=20)
plt.show()
```
在这个示例中,我们首先创建了一个包含 100 个随机数的 Tensor 数据。然后,我们使用 `data.numpy()` 方法将其转换为 numpy 数组,并将其传递给 `plt.hist()` 函数来绘制直方图。最后,我们调用 `plt.show()` 方法来显示图形。
相关问题
plot_size = 730 plt.figure(figsize=(12, 8)) plt.plot(scaler.inverse_transform((model(x_train_tensor).detach().numpy()[: plot_size]).reshape(-1, 1)), "b") plt.plot(scaler.inverse_transform(y_train_tensor.detach().numpy().reshape(-1, 1)[: plot_size]), "r") plt.legend() plt.show() y_test_pred = model(x_test_tensor) plt.figure(figsize=(12, 8)) plt.plot(scaler.inverse_transform(y_test_pred.detach().numpy()[: plot_size]), "b") plt.plot(scaler.inverse_transform(y_test_tensor.detach().numpy().reshape(-1, 1)[: plot_size]), "r") plt.legend() plt.show()这段代码后加上图片保存到文件夹A中,且图片分别以数据路径的文件名,文件名1、文件名2命名
可以在代码中添加如下代码,实现保存图片到文件夹A中,并分别以数据路径的文件名、文件名1、文件名2命名:
```
# 获取数据路径的文件名
file_name = os.path.basename(config.data_path)
# 保存训练集预测结果图片
plt.figure(figsize=(12, 8))
plt.plot(scaler.inverse_transform((model(x_train_tensor).detach().numpy()[: plot_size]).reshape(-1, 1)), "b")
plt.plot(scaler.inverse_transform(y_train_tensor.detach().numpy().reshape(-1, 1)[: plot_size]), "r")
plt.legend()
plt.savefig(f'./A/{file_name}_文件名1.png')
# 保存测试集预测结果图片
y_test_pred = model(x_test_tensor)
plt.figure(figsize=(12, 8))
plt.plot(scaler.inverse_transform(y_test_pred.detach().numpy()[: plot_size]), "b")
plt.plot(scaler.inverse_transform(y_test_tensor.detach().numpy().reshape(-1, 1)[: plot_size]), "r")
plt.legend()
plt.savefig(f'./A/{file_name}_文件名2.png')
```
其中,`os.path.basename()`函数可以获取数据路径中的文件名。在保存图片时,使用f-string将文件名和后缀拼接成完整的文件名。例如,如果数据路径为`'C:/Users/ASUS/Desktop/F4/常州道旅好/常州公路运输集团有限公司(常320401000352).csv'`,则保存的文件名为`'常州公路运输集团有限公司(常320401000352).csv_文件名1.png'`和`'常州公路运输集团有限公司(常320401000352).csv_文件名2.png'`。需要注意的是,如果数据路径中包含特殊字符,如括号、斜杠等,需要对文件名进行处理,以避免出现路径错误等问题。
plt.plot(scaler.inverse_transform(y_test_pred.detach().numpy()), "b") plt.plot(scaler.inverse_transform(y_test_tensor.detach().numpy().reshape(-1, 1)), "r") plt.legend() plt.show()以上函数的X轴相距为1,怎么将X轴相距改为0.06
你可以使用`plt.xticks`函数来设置X轴刻度的间距为0.06。具体实现步骤如下:
1. 计算出X轴的数据范围(最小值和最大值)
2. 使用`np.arange`函数生成新的X轴刻度值,间距为0.06
3. 使用`plt.xticks`函数将新的刻度值设置给X轴
下面是一份示例代码,你可以参考一下:
```
import numpy as np
import matplotlib.pyplot as plt
# 假设原来的代码如下
# plt.plot(scaler.inverse_transform(y_test_pred.detach().numpy()), "b")
# plt.plot(scaler.inverse_transform(y_test_tensor.detach().numpy().reshape(-1, 1)), "r")
# plt.legend()
# plt.show()
# 生成一些随机数据作为示例
y_test_pred = np.random.rand(100)
y_test_tensor = np.random.rand(100)
# 计算X轴的数据范围
x_min = 0
x_max = y_test_pred.shape[0]
# 生成新的X轴刻度值
new_ticks = np.arange(x_min, x_max, 0.06)
# 绘制图形并设置X轴刻度
plt.plot(y_test_pred, "b")
plt.plot(y_test_tensor, "r")
plt.legend()
plt.xticks(new_ticks)
plt.show()
```
请注意,上面的代码中使用了随机数据作为示例,你需要将其替换为你自己的数据。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)