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

时间:2017-07-18 02:13:11

标签: python numpy matplotlib

我正在使用动力系统进行模拟。基本上对于2D平面中的每个初始条件(x,y),我计算一定数量,即实数。我的目标是取一堆点并计算每个点的所述数量,然后制作颜色图。

此特定模拟涉及势能函数,x和y为输入。我修复了能量并绘制了函数的轮廓(使用matplotlib中的plt.contour)。我想在这个轮廓内创建一个颜色图。

到目前为止,我只对矩形域进行了模拟,并使用了np.meshgrid,但这次我不知道该怎么做。有人可以提供一些建议吗?到目前为止,我有这个:

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的值,在V计算h的轮廓,对my_function(x,y,h)的值进行颜色绘制其中(x,y)内部点的轮廓。因此,颜色图仅限于轮廓线内的点。基本上就像这样

like this

0 个答案:

没有答案