![](/img/trans.png)
[英]How do I redraw a matplotlib.pyplot figure in a Jupyter notebook?
[英]How to change a matplotlib figure in a different cell in Jupyter Notebook?
我正在学习如何在 Jupyter Notebook 中使用 matplotlib 创建和修改绘图。 我在笔记本的开头添加了以下魔法函数和导入语句:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
然后,我创建了一个单元格并添加了以下所有代码:
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x
plt.figure()
plt.scatter(x[:2], y[:2], s=100, c='red', label='Red data')
plt.scatter(x[2:], y[2:], s = 100, c='blue', label='Blue data')
plt.xlabel('This is my x label')
plt.ylabel('This is my y label')
plt.title('This is my plot title')
在这种情况下,情节本身似乎很好,尽管我不明白为什么添加了额外的Text(0.5, 1.0, 'This is my plot title')
行,而 xlabel 和 ylabel 文本对象没有任何内容。
现在我发现总是必须将与情节有关的每个命令都强制放入一个单元格中是不切实际的。 我希望能够在一个单元格中创建基本绘图,并在不同的单元格中为其添加标签和图例(稍后对绘图进行其他操作,但这不是此问题的主题)。 为此,我需要引用在第一个单元格中创建的图 - 为此,我使用了plt.gcf()
。 但是,当我运行以下代码时,Python / matplotlib / Jupyter 将不同的单元格完全视为不同的图。 (注意:虚线分隔表示不同的 Jupyter Notebook 单元。)
plt.figure()
plt.scatter(x[:2], y[:2], s=100, c='red', label='Red data')
plt.scatter(x[2:], y[2:], s = 100, c='blue', label='Blue data')
#-------------------------------------------------------------
plt.gcf()
plt.xlabel('This is my x label')
plt.ylabel('This is my y label')
plt.title('This is my plot title')
#-------------------------------------------------------------
plt.gcf()
plt.legend(loc=4, frameon=False, title='Legend')
我尝试将%matplotlib inline
更改为显然更现代的%matplotlib notebook
但没有帮助。 我也尝试从单元格的开头删除plt.gcf()
行,但我仍然得到相同的输出。
编辑我的版本是:
将图形保存到像fig
这样的变量,然后使用fig.gca()
获取当前轴
(对于额外的绘图命令)会做到这一点。
首先导入包并使用 matplotlib 内联环境:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
然后获取您的数据并为其创建散点图(同时将图保存为图形)
# Generate some random data
x = np.arange(1,3)
y = x
x2 = np.arange(3,11)
y2 = x2
x3 = np.arange(11,21)
y3 = x3
# Create initial figure
fig = plt.figure()
plt.scatter(x, y, linewidth=5)
然后使用fig.gca()
技巧绘制更多数据( fig
线显示单元格下的图):
fig.gca().scatter(x2, y2, color='r', linewidth=5)
fig
fig.gca().scatter(x3, y3, color='g', linewidth=5)
fig
fig.legend(['Blue Data','Red Data','Green Data'], loc='lower right')
fig
fig.gca().set_xlabel('My x label')
fig.gca().set_ylabel('My y label')
fig.gca().set_title('A title')
fig
正如您在我的代码中所看到的,对绘图的每个添加(数据、轴标题等)都是在单独的单元格中完成的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.