我使用matplotlib.pyplot的IPython笔记本,我经常创建一个需要相当大的代码块来生成的图.然后我想保存对象,并使用完全相同的图/轴对,以便稍后合并到另一个图中.
例如,假设我有一些散点图的xy数据对.我想稍后显示点数,然后是几个单元格 - 可能还有其他调用pyplot来制作其他不相关的数字 - 我想再次显示这个数字,以便我可以用回归线或某些数据绘制它其他图形.
在下面我附上的图片中,我有一个简短的笔记本; 我希望单元格#2中的数字在单元格#3中绘制而不再调用pyplot.scatter.
基本上,我想再次显示图形而不重复所有代码.这样做有什么选择?我无法通过调用show()或draw()或通过将单元格中的当前图形对象设置为我保存的图形对象来完成此操作.欢迎任何建议.谢谢!
PS我知道如果我重复使用图形并在其上绘图,对象将会改变,因此无花果对象的状态可能与先前IPython单元格中绘制的绘图不匹配.这对我的工作没问题.
我正在使用IPython 0.12.1笔记本从Windows机器连接到运行IPython内核的Linux服务器.由于Linux机器没有安装X-Server,我使用以下配置:
IPKernelApp.pylab = 'inline'
它以内联方式显示数字.
一旦在笔记本中绘制数字,IPython就会关闭它们.那么如何编辑刚绘制的图形呢?喜欢添加标题.对于我的情况,绘图过程需要一段时间,我希望能够在保存它之前使用该图来玩,而无需重绘它.
我试着保存一个手柄,并使用它,但我没有成功.
我正在使用iPython进行编码.当我打开笔记本并通过执行SHIFT + ENTER运行一些代码时,它会运行.但经过一两次,它就不再提供任何输出.这是为什么.我必须再次关闭笔记本打开它然后再运行几次和同样的问题.
这是我用过的代码.
Cell Toolbar:
Question 1: Rotational Invariance of PCA
I(1): Importing the data sets and plotting a scatter plot of the two.
In [1]:
# Channging the working directory
import os
os.getcwd()
path="/Users/file/"
os.chdir(path)
pwd=os.getcwd()
print(pwd)
# Importing the libraries
import pandas as pd
import numpy as np
import scipy as sp
# Mentioning the files to be imported
file=["2d-gaussian.csv","2d-gaussian-rotated.csv"]
# Importing the two csv files in pandas dataframes
XI=pd.read_csv(file[0],header=None)
XII=pd.read_csv(file[1],header=None)
#XI
XII
Out[5]:
0 1
0 …Run Code Online (Sandbox Code Playgroud) 我找不到答案,所以请让我问这里.
我想在使用时保持ipython笔记本中的当前数字%matplotlib inline.那可能吗?
例如,我想在图表中绘制2条线
plt.plot([1,2,3,6],[4,2,3,4])
plt.plot([3.3, 4.4, 4.5, 6.5], [3., 5., 6., 7.])
Run Code Online (Sandbox Code Playgroud)
如果我将这两个命令行放在一个单元格中就可以了.该图显示了两行.但是,如果我将它们分别放入两个单元格中,当第二个单元格(plt.plot([3.3,4.4,4.5,6.5],[3.,5.,6.,7.]))执行时,前一个plot(plt.plot([1,2,3,6],[4,2,3,4]))被清除.我想绘制一个带有第一个单元格的线条的图形和一个带有第二个单元格的两条线条的图形.
我查了一下网站 它明确地清除了情节
plt.cla() # clear existing plot
Run Code Online (Sandbox Code Playgroud)
但它有点令人困惑,因为无论如何它会自动清除.
是否有任何命令不能清除(或保留)Matlab中的"hold on"之前的情节?