pyplot的绘图转换为numpy矩阵

1.核心原理

height_default, dpi_default= (4.8, 100)
    
fig = plt.figure()
plt.plot(x, y)
fig.canvas.draw()
fig_str = fig.canvas.tostring_rgb()
data = np.frombuffer(fig_str, dtype=np.uint8).reshape((int(height_default*dpi_default), -1, 3)) / 255.0

主要步骤为:
(1)创建 Figure
(2)在Figure中绘图,plot()scatter()imshow()…都行
(3)在canvas中绘制
(4)将canvas转换为「字符串」
(5)使用numpy.frombuffer()从「字符串」中读取数组,并用reshape()转换回矩阵

2.需要注意的问题

参考上一篇文章:避免pyplot出现Fail to allocate bitmap报错的方法

3.完整程序

import matplotlib.pyplot as plt
import numpy as np


class plot_to_matrix:
    def __init__(self):
        self.width= 6
        self.height= 4
        self.dpi= 128
        self.fig_convert = plt.figure(figsize=(self.width, self.height), dpi=self.dpi)
        self.axes_convert = self.fig_convert.add_axes([0.16, 0.15, 0.75, 0.75])

    def plot_to_matrix(self, x, y):
        self.axes_convert.cla()
        self.axes_convert.plot(x, y)

        self.fig_convert.canvas.draw()
        fig_str = self.fig_convert.canvas.tostring_rgb()
        data = np.frombuffer(fig_str, dtype=np.uint8).reshape((self.height*self.dpi, -1, 3))/255.0
        return data

if __name__ == '__main__':
    x= np.linspace(0,1,100)
    y= np.sin(x*20)
    pm= plot_to_matrix()
    for i in range(1000):
        m= pm.plot_to_matrix(x, y)
        """some thing"""
    # plt.figure()
    # plt.imshow(m)
    # plt.show()
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PythonNumPy库是一个用于科学计算的强大工具,它主要用于处理大型多维数组和矩阵,并提供了许多高级数学函数的集合。在NumPy中,可以使用np.array()函数创建数组,然后使用这些数组进行各种数学运算和数据处理操作。对于色彩绘图NumPy库提供了一些函数和工具来创建和操作图像。 要进行色彩绘图,可以使用NumPy库中的np.linspace()函数生成一系列等间隔的数值,然后使用这些数值创建一个数组。接下来,可以使用一些函数来将这些数值映射到不同的颜色值,创建一个色彩图像。例如,可以使用np.meshgrid()函数创建一个网格,并使用plt.imshow()函数将数组中的数值映射到颜色图谱上进行可视化。 下面是一个简单的示例代码,演示了如何使用NumPy库进行色彩绘图: import numpy as np import matplotlib.pyplot as plt # 生成一系列等间隔的数值 x = np.linspace(0, 1, 100) y = np.linspace(0, 1, 100) # 创建网格 X, Y = np.meshgrid(x, y) # 计算某个函数在每个点的值,并映射到颜色图谱上 Z = np.sin(X) + np.cos(Y) # 绘制色彩图像 plt.imshow(Z, cmap='hot') plt.colorbar() plt.show() 这段代码首先使用np.linspace()函数生成了一系列在0到1之间的等间隔数值,然后使用np.meshgrid()函数将这些数值转换为网格坐标。接下来,通过计算某个函数在每个点的值,并使用plt.imshow()函数将这些值映射到颜色图谱上。最后,使用plt.colorbar()函数添加一个颜色条,用于标示颜色和数值的对应关系。最后调用plt.show()函数显示绘制的图像。 这只是一个简单的示例,你可以根据具体的需求和数据进行更复杂的色彩绘图操作。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python numpy库的使用 python基础,演示了numpy库的使用,提供python2例程代码,适合初学者](https://download.csdn.net/download/li171049/88225556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [matlab代码替换-Python-Numpy:pythonnumpy的](https://download.csdn.net/download/weixin_38628362/19092349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [pythonNumpyPyplot的条件绘图](https://blog.csdn.net/weixin_30899991/article/details/114389037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值