虽然可以在 Jupyter 控制台中渲染具有透明背景的内联图形,但我无法在 Jupyter Notebook 中将图形背景设置为透明。
为什么?有什么想法吗?
请参阅下面的最小可重现示例。
创建透明 matplotlib 图形的代码
%matplotlib inline
import matplotlib.pyplot as plt
fig = plt.figure(facecolor="#00FF0000")
ax = fig.add_axes([0, 0, 1, 1], facecolor="#FF000000")
plt.plot(range(10), [x**2 for x in range(10)])
它可以在 Jupyter 控制台中运行。
jupyter qtconsole --style monokai
但它在 Jupyter 笔记本中不起作用(在 VS Code 中测试)
虽然不透明,但在 Jupyter 中添加此行可以设置颜色以更好地匹配您在 qtconsole 中看到的内容:
fig.patch.set_facecolor([0.08, 0.08 , 0.08, 1]); # based on https://stackoverflow.com/q/61891800/8508004;
OP 的示例代码(几乎*)将其合并到 JupyterLab 4.1 中,并打开主题“JupyterLab Dark”:
%matplotlib inline
import matplotlib.pyplot as plt
fig = plt.figure(facecolor="#00FF0000")
ax = fig.add_axes([0, 0, 1, 1], facecolor="#FF000000", frame_on=True)
plt.plot(range(10), [x**2 for x in range(10)])
fig.patch.set_facecolor([0.08, 0.08 , 0.08, 1]); # based on https://stackoverflow.com/q/61891800/8508004;
#fig.patch.set_alpha(1.0); # based on https://stackoverflow.com/a/4708018/8508004
可以通过定义书脊、刻度线和标签的颜色来进一步修改,以使其他部分更好地显示,如下所示:
%matplotlib inline
import matplotlib.pyplot as plt
fig = plt.figure(facecolor="#00FF0000")
ax = fig.add_axes([0, 0, 1, 1], facecolor="#FF000000", frame_on=True)
plt.plot(range(10), [x**2 for x in range(10)])
fig.patch.set_facecolor([0.08, 0.08 , 0.08, 1]); # based on https://stackoverflow.com/q/61891800/8508004;
#fig.patch.set_alpha(1.0); # based on https://stackoverflow.com/a/4708018/8508004
ax.spines['bottom'].set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.spines['top'].set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.spines['right'].set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.spines['left'].set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.tick_params(axis='x', colors='#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.tick_params(axis='y', colors='#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.yaxis.label.set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
ax.xaxis.label.set_color('#dddddd') # based on https://stackoverflow.com/a/51850717/8508004
*注意,我离开了
frame_on = True
,因为我认为 False
与 OP 在屏幕截图中显示的内容不匹配。您的里程可能会有所不同,所以也许您想像OP一样尝试frame_on=False
。