将数据从绘图保存到numpy数组

pceccon

我想知道如何将使用Matplotlib生成的图的数据内容保存到Numpy数组中。

作为示例,假设我使用以下代码生成了轮廓图

import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)

plt.figure()
CS = plt.contour(X, Y, Z)
plt.show()

从中我得到以下内容:

在此处输入图片说明

我想知道如何保存这些数据,因此,在进行其他一些操作之后imshow,例如,如果使用来显示该数据,则可以像原始图像一样恢复绘制并填充的轮廓颜色。

编辑:

即,我希望能够通过该contourf方法生成图像,对其进行一些处理,例如在特定区域中应用一些蒙版,然后绘制此修改后的数据。对于这种contour情况,我想将此图与一堆表示的水平一起使用来进行操作,而不是遍历cs.collection并做一些事情(我真的不知道是什么)来获得等效值numpy.array来表示该图。

我知道我可以将图像保存到文件中,而不是读取该文件,但这对我来说似乎是一个糟糕的解决方案。我也尝试过解决方案,但随后我得到了完整的图,包括绿色区域,而不仅仅是真实的内容。

汤姆10

对于最新版本的matplotlib,您可以用于pickle保存整个图或仅选择的图块,甚至可以从腌制数据中再次显示图:

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import pickle

if 0:  # to generate the file
    delta = 0.025
    x = np.arange(-3.0, 3.0, delta)
    y = np.arange(-2.0, 2.0, delta)
    X, Y = np.meshgrid(x, y)
    Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
    Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
    Z = 10.0 * (Z2 - Z1)

    ax = plt.subplot(111)
    CS = ax.contourf(X, Y, Z)

    pickle.dump(ax, open("mpl_test.pkl", "w"))
    pickle.dump(CS, open("contours.pkl", "w"))

else: # Then at a later time...

    x0 = pickle.load(open("mpl_test.pkl", "r"))
    x1 = pickle.load(open("contours.pkl", "r"))

    v = x1.collections[0].get_paths()[0].vertices   # get the vertices of the contour
    x, y = v[:,0]+.2, v[:,1]+.1                     # shift the contour
    x0.plot(x, y, 'w', linewidth=3)                 # add it to the plot as a white line

上面的示例首先用if子句对等高线图进行腌制,然后在以后使用该else零件。然后,它取一个轮廓并将其平移并将其重新绘制为白线。

即,该图形和修改后的轮廓完全从重新加载的腌制图形中绘制。

在此处输入图片说明

轮廓是mpl Path,并且比本示例所暗示的要复杂得多,因此此方法并非总是能很好地工作(尽管考虑到其他路径数据,它的通用版本将可以-参见上面链接的文档)。

腌制mpl物品有点新,并且没有完全记录或可靠,但它是有用的功能。

IPython Notebook
另一方面,也许您真正想要的是IPython Notebook!在那里,您可以进行计算,查看和运行整个计算历史。除了存储数据,它还使您可以轻松地重新访问,修改之前所做的操作等。它非常强大。以下是一些链接和示例:ABCD

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将numpy数组保存到json

来自分类Dev

PHP的将循环数据保存到数组

来自分类Dev

将SQL数据保存到PHP数组

来自分类Dev

将JSON数据保存到数组中

来自分类Dev

将数据数组保存到数据库

来自分类Dev

Laravel,将数据从数组保存到数据库

来自分类Dev

将Numpy结构数组保存到* .mat文件

来自分类Dev

Python:将numpy数组保存到ROOT文件

来自分类Dev

将堆叠的NumPy数组保存到文本时出错

来自分类Dev

将numpy数组的元组保存到磁盘吗?

来自分类Dev

Python:将numpy数组保存到ROOT文件

来自分类Dev

将矢量化图像保存到 numpy 数组

来自分类Dev

将动态数组保存到MySQL数据库

来自分类Dev

将数组保存到MongoDB数据库

来自分类Dev

将文件中的数据保存到数组中

来自分类Dev

Lua-将数据保存到for循环中的数组

来自分类Dev

将Div的数组内容保存到MySQL数据库

来自分类Dev

如何将数组从 MATLAB 保存到数据库?

来自分类Dev

云函数和 Firestore 将数据保存到数组中

来自分类Dev

将数组快速保存到领域数据库中

来自分类Dev

读取文件时将数据保存到指针数组

来自分类Dev

将数组中的数据保存到 csv 文件中

来自分类Dev

将 Api 响应保存到数据库。(JSON 数组)

来自分类Dev

将数组保存到json

来自分类Dev

将数据保存到socketio

来自分类Dev

保存mysql,同时将数据循环到数组中,然后保存到数据库中

来自分类Dev

如何将选定的Uri图片保存到绘图中?

来自分类Dev

将Matplotlib绘图图像保存到Django模型中

来自分类Dev

将Numpy数组的元素保存到不同的numpy数组中,具体取决于起始数组的特定区域(Python)