如何在轮廓内创建颜色图?

2024-04-24 19:53:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用动力系统做模拟。基本上,对于二维平面上的每一个初始条件(x,y),我计算出一个特定的量,这是一个实数。我的目标是采取一系列的点,并计算出所说的数量为每个点,然后作出一个彩色绘图。你知道吗

这个特殊的模拟包含一个势能函数,以x和y作为输入。我固定能量并绘制函数的轮廓(使用等高线从matplotlib)。我想在这个轮廓内创建一个颜色图。你知道吗

到目前为止,我只在矩形域上进行了模拟,并使用np.网格,但这次我不知道怎么做。有人能提些建议吗?到目前为止,我有:

import numpy as np
import matplotlib.pyplot as plt

def V(x,y):
   return 0.5*(x**2+y**2)+(x**2)*y-(1.0/3.0)*(y**3)

def my_function(x,y,h):
   # insert function here
   # returns a real number > 0 

#The following segment plots a contour of V at value h:
def plot_contour(h):
    x=np.linspace(-1.0,1.0,200)
    y=np.linspace(-1.0,1.0,200)
    X,Y=np.meshgrid(x,y)
    Z=np.zeros((200,200))
    for i in range(200):
        for j in range(200):
            Z[i,j]=V(X[i,j],Y[i,j])
    plt.contour(X,Y,Z,[h])
    plt.show()

#The following segment creates a color plot on a rectangular domain
def color_plot(h):
    x=np.linspace(-1.0,1.0,200)
    y=np.linspace(-1.0,1.0,200)
    X,Y=np.meshgrid(x,y)
    Z=np.zeros((200,200))
    for i in range(200):
        for j in range(200):
            Z[i,j]=my_function(X[i,j],Y[i,j],h)
    plt.pcolormesh(X,Y,Z)
    plt.show()

我想做以下工作:选择一个值h,计算Vh的轮廓,用颜色绘制my_function(x,y,h)的值,其中(x,y)是轮廓内的一个点。因此,颜色图仅限于等高线内的点。基本上就是这样

like this


Tags: 函数inforplot颜色mydefnp