【问题标题】:Countour lines Matplotlib Python等高线 Matplotlib Python
【发布时间】:2012-07-18 02:16:02
【问题描述】:

如果我有一个包含每次都反映位置的元组的列表,我所需要的只是有一个图形,将这个向量显示为速度的计数线(另一个列表)。我该怎么做?

例如:

import matplotlib.pyplot as plt
import numpy as np
position = [(12,14), (12.22,13.22), (15, 17)]
velocity = [4.55,2.13,5]

【问题讨论】:

  • 您的问题不清楚。您如何建议从如此有限的数据中生成等高线?通常,等高线用于提供双输入函数值的二维表示(例如,各个点的高程)。你只有几个孤立的数字。
  • 这只是想法。假设我将位置作为向量列表,以及每个位置的速度。我需要一个将每个位置向量与其速度连接起来的图形。我认为countour线会做得很好。你不觉得吗?我不知道我该怎么做
  • 由两个变量组成的函数的等高线(也称为等值线、等值线或等值线)是一条曲线,函数沿该曲线具有一个常数值。

标签: python matplotlib contour


【解决方案1】:

使用 griddata() 将散点转换为网格数据,这里是一个例子:

import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
np.random.seed(0)

x = np.random.normal(size=200)
y = np.random.normal(size=200)
v = np.sqrt(x**2+y**2)

xg, yg = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
vg = griddata((x, y), v, (xg, yg), method='cubic')
plt.contourf(xg, yg, vg)
plt.scatter(x, y, c=v)
plt.show()

输出是:

【讨论】:

    【解决方案2】:

    如果您想绘制每个点的速度,那么您应该尝试quiver。它制作了一个方向场(箭头)图。由于速度是矢量,它同时具有xy 分量。

    import pylab as plt
    
    x=[12, 13, 14, 15, 16] # x-axis coordinates
    y=[14, 15, 16, 17, 18] # y-axis coordinates
    
    v_x=[6, 6, 6, 6, 6] # x-component of velocity
    v_y=[1,4,3,2,1]     # y-component of velocity
    
    plt.quiver(x,y,v_x,v_y)
    plt.xlim(11,17)
    plt.ylim(13,19)
    
    plt.show()
    

    如果您想了解有关quiver 的更多信息,请查看here

    相比之下,contour 是一些变量沿其具有恒定值的曲线。如果您想了解更多信息,请查看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多