我想在背景中创建一些带有网格的 xkcd 图。像这个例子,但是当plt.xkcd()网格不会出现在图中。
from matplotlib import pyplot as plt
import numpy as np
plt.xkcd()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.xticks([])
plt.yticks([])
ax.set_ylim([-30, 10])
plt.grid()
data = np.ones(100)
data[70:] -= np.arange(30)
plt.annotate(
'THE DAY I REALIZED\nI COULD COOK BACON\nWHENEVER I WANTED',
xy=(70, 1), arrowprops=dict(arrowstyle='->'), xytext=(15, -10))
plt.plot(data)
plt.xlabel('time')
plt.ylabel('my overall health')
plt.show()
Run Code Online (Sandbox Code Playgroud)
在使用 mplot3d 绘制的图的情况下,网格是“工作的”,如本例所示。虽然,网格似乎是完美的。如何创建网格?
我正在将我的评论扩展为答案。正如 DrV 所提到的,线宽设置为零,因此我们需要在对 的调用中明确指定grid()。其他需要考虑的事情是网格将出现在绘图上,因此zorder需要指定。正如在这篇文章中提到的,网格应该设置为zorder=0并且绘图应该有一个大于 3 的值zorder=3。
所以,一个没有网格的例子是
import numpy as np
import matplotlib.pyplot as plt
plt. xkcd()
x = np.linspace(0, 1)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
plt.fill(x, y, 'r')
plt.grid(True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
给予:

网格示例:
import numpy as np
import matplotlib.pyplot as plt
plt. xkcd()
x = np.linspace(0, 1)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
plt.fill(x, y, 'r', zorder=3)
plt.grid(True, lw=0.5, zorder=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)
给予:

| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |