相关疑难解决方法(0)

保存交互式Matplotlib数字

有没有办法保存Matplotlib数字,以便可以重新打开并恢复典型的交互?(就像MATLAB中的.fig格式一样?)

我发现自己多次运行相同的脚本来生成这些交互式数字.或者我正在向我的同事发送多个静态PNG文件以显示情节的不同方面.我宁愿发送图形对象并让它们自己与它进行交互.

python matplotlib

109
推荐指数
4
解决办法
5万
查看次数

我怎样才能在python中挑选一个嵌套类?

我有一个嵌套类:

class WidgetType(object):

    class FloatType(object):
        pass

    class TextType(object):
        pass

..和一个引用嵌套类类型(不是它的实例)的对象,就像这样

class ObjectToPickle(object):
     def __init__(self):
         self.type = WidgetType.TextType

尝试序列化ObjectToPickle类的实例会导致:

PicklingError:无法挑选<class'setmanager.app.site.widget_data_types.TextType'>

有没有办法在python中腌制嵌套类?

python nested class pickle

38
推荐指数
5
解决办法
2万
查看次数

Matplotlib 重用由另一个脚本创建的图形

我在 MacOS 上使用 Matplotlib 和 Slime Text。我使用Python 3.5Matplotlib 2.0

当我处理图形时,我通常有一个脚本来绘制数据,并将图形保存在一个 .pdf 文件中,扩展名为 .pdf 文件plt.savefig()。然后我使用Skim(pdf 查看器)以便在每次修改和运行脚本时刷新文件。这允许我将我的工作布局设置为干净:脚本有一个窗口,图形有一个窗口会自动刷新。

我想保持相同的布局,但使用 Matplotlib 图形(因为它们是交互式的)。我正在寻找一种使用方法,plt.show()始终与我第一次运行脚本时创建的图形相同

例如:

1.第一次运行

import matplotlib.pyplot as plt
import numpy as np 

fig, ax = plt.figure()    

noise = np.random.rand(1, 100)
ax(noise)
plt.show()
Run Code Online (Sandbox Code Playgroud)

2. 后续运行

import matplotlib.pyplot as plt
import numpy as np 

# This is the super command I am looking for
fig = plt.get_previous_run_figure()
ax = fig.axes

noise = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

7
推荐指数
1
解决办法
4985
查看次数

ImportError:没有名为_gdbm的模块matplotlib pickle

因为matplotlib 1.3 matplotlib数字是可以腌制的

当我尝试在stackoverflow上找到一个例子时:

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

ax = plt.subplot(111)
x = np.linspace(0, 10)
y = np.exp(x)
plt.plot(x, y)
pickle.dump(ax, file('myplot.pickle', 'w'))
Run Code Online (Sandbox Code Playgroud)

来源:存储并重新加载matplotlib.pyplot对象

我收到以下错误:

Traceback (most recent call last):
  File "D:/Work/Programming/Experimental/picklematplotlib/main.py", line 15, in <module>
    pickle.dump(ax, file)
  File "C:\Python32\lib\site-packages\six.py", line 116, in __getattr__
    _module = self._resolve()
  File "C:\Python32\lib\site-packages\six.py", line 105, in _resolve
    return _import_module(self.mod)
  File "C:\Python32\lib\site-packages\six.py", line 76, in _import_module
    __import__(name)
  File "C:\Python32\lib\dbm\gnu.py", line 3, in <module>
    from _gdbm import *
ImportError: …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
2104
查看次数

python matplotlib:如何自动保存.fig格式的数字?

使用python matplotlib模块,我们可以使用pylab.savefig()函数来保存数字.但是,似乎此函数不能用于以.fig格式保存数字..fig格式是matlab图形格式.

使用.fig格式,我们可以调整/修改数字,这就是我想将数字保存为.fig格式的原因.

那么有没有办法用python matplotlib以.fig格式保存数字?

python matlab matplotlib figure

6
推荐指数
3
解决办法
2610
查看次数

Matplotlib:如何显示已关闭的数字

我有一个返回Figure创建的函数pyplot.此函数在返回之前关闭图形.如果我没有关闭它,只显示它会很容易plt.show(),但让我们假设我不能这样做.

我可以轻松地将返回Figure的文件保存到文件中,但是我找不到显示它的方法(即:有一个显示该图的弹出窗口).

from matplotlib import pyplot as plt                                                


def new_figure():                                                                   
    fig = plt.figure()                                                              
    plt.plot([0, 1], [2, 3])                                                        
    plt.close(fig)                                                                  
    return fig                                                                      


fig = new_figure()                                                                  
fig.savefig('output.svg')                                                           
fig.show()
Run Code Online (Sandbox Code Playgroud)

我怎么能显示这个数字?

python matplotlib

6
推荐指数
1
解决办法
3619
查看次数

python matplotlib 将图形保存为数据文件

我想创建一个 python 脚本,沿水平轴放大和缩小 matplotlib 图形。我的图是一组水平条形图。

我还想让它能够采用任何通用的 matplotlib 图表。

我不想只加载图像并放大该图像,我想沿水平轴放大图表。(我知道该怎么做)

有什么方法可以将创建的图形保存和加载为数据文件,或者是否有一个对象可以稍后保存和加载?

(通常,我会创建图形,然后使用 matplotlib plt.show 显示它,但是图形创建需要时间,而且我不想每次要显示它时都重新创建图形)

python matplotlib

4
推荐指数
1
解决办法
9139
查看次数

尝试加载腌制的 matplotlib 图时出现 AttributeError

我曾经pickle转储matplotlib数字,如SO的答案所示。下面是代码片段——

import pickle
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3],[10,-10,30])
pickle.dump(fig, open('fig.pickle', 'wb'))
Run Code Online (Sandbox Code Playgroud)

下面是加载腌制图的代码片段-

import pickle
figx = pickle.load(open('fig.pickle', 'rb'))
figx.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码显示以下错误-

AttributeError: 'NoneType' object has no attribute 'manager'
Figure.show works only for figures managed by pyplot, normally created by pyplot.figure().
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu 14.04 LTS 64 位操作系统上使用 Python 3.6.3。以下是我的环境的更多详细信息-

> import matplotlib
> matplotlib.__version__
'2.1.0'
> matplotlib.get_backend()
'Qt5Agg'
> import sys
> sys.version_info
sys.version_info(major=3, minor=6, micro=3, releaselevel='final', serial=0)
Run Code Online (Sandbox Code Playgroud)

PS:我的问题似乎类似于在 …

python matplotlib

4
推荐指数
1
解决办法
3669
查看次数

标签 统计

python ×8

matplotlib ×7

class ×1

figure ×1

matlab ×1

nested ×1

pickle ×1