python - 使用 Python 绘制一个圆圈并为其中的区域着色?
问题描述
我正在使用以下代码绘制以原点为中心的单位半径圆:
fig =plt.figure(figsize=(10,7))
x = np.linspace(-5.0, 5.0, 100)
y = np.linspace(-5.0, 5.0, 100)
X, Y = np.meshgrid(x,y)
F = X**2 + Y**2 - 1
plt.contour(X,Y,F,[0])
plt.show()
我现在想用蓝色遮蔽圆圈内的区域。怎么可能做到这一点?
另外,我如何将 x 和 y 轴添加到该图中并标记这些轴?
解决方案
要对轮廓区域进行着色,您可以使用plt.contourf()
. 您需要提供至少两个在其间着色的级别,例如使用非常小的值和零。该函数接受一个明确的颜色列表(或可以使用颜色图)。
ax.spines['left'].set_position('center')
可以将 y 轴设置在 x 的零点,而不是默认放置在边界处。ax.set_ylabel('y', loc='top')
将 y 标签设置在顶部(默认位于中心)。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(10, 7))
x = np.linspace(-5.0, 5.0, 100)
y = np.linspace(-5.0, 5.0, 100)
X, Y = np.meshgrid(x, y)
F = X ** 2 + Y ** 2 - 1
plt.contourf(X, Y, F, [-100, 0], colors=['dodgerblue'])
ax = plt.gca()
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.set_xlabel('x', loc='right')
ax.set_ylabel('y', loc='top')
plt.show()
请注意,Python 的符号数学包sympy
无需创建网格即可执行类似的操作。
from sympy import plot_implicit
from sympy.abc import X, Y
plot1 = plot_implicit(X ** 2 + Y ** 2 < 1)
要更改 sympy 图,您可以访问ax
via plot1._backend.ax[0]
,或使用 matplotlibplt.gca()
和plt.gcf()
,如下所示:
from sympy import plot_implicit
from sympy.abc import X, Y
plot1 = plot_implicit(X ** 2 + Y ** 2 < 1)
import matplotlib.pyplot as plt
ax = plt.gca()
ax.set_xlabel('new x label', ha='right')
ax.set_ylabel('new y label', ha='right')
ax.set_aspect('equal') # use same transformation for x and y, so circles aren't deformed
fig = plt.gcf()
fig.set_size_inches(8, 8)
fig.savefig('test_circle.png', dpi=100)
推荐阅读
- angular - Angular css assets url没有指向ng serve中的正确目录
- firebase - 是否可以将字段值移动到 firebase 中同一文档的另一个集合?反应原生
- javascript - 如何访问 nocollapsed 对象名称(使用closure-util 编译)
- php - 使用 db 的 for 循环中的预选选项
- python-sphinx - Sphinx/reStructuredText:是否可以拥有一个 html 文档树,但将其拆分为单独的乳胶/pdf 文档
- java - 选择 X 类 ArrayList 的不同字段
- python - 使用 Python 如何登录到受保护的网站
- c - 如何从 C 语言函数中检索输入参数值
- hive - 删除 hive 表中的空值
- r - aes 填充的位置闪避和 aes 颜色的位置堆栈