使用python绘制一个圆并对其内部区域进行着色?

tag5nh1u  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(454)

我使用以下代码绘制以原点为中心的单位半径圆:

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轴添加到此绘图并标记这些轴?

jgovgodb

jgovgodb1#

要对轮廓区域进行着色,可以使用 plt.contourf() . 您需要提供至少两个级别,以便在这两个级别之间着色,例如使用非常小的值和零。该函数接受显式的颜色列表(或者可以使用颜色Map)。 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)


(改变颜色似乎有点复杂。 plot1._backend.ax[0].patches[0].set_facecolor('skyblue') 是一种可能性,但使用私有变量。)

相关问题