【问题标题】:Triangulation method to plot a density map in Python在 Python 中绘制密度图的三角测量方法
【发布时间】:2015-08-25 23:44:32
【问题描述】:

我有一个文件,其中包含一组点的坐标 (x,y),并且我正在使用三角测量方法来生成代表表面的三角形网络。 三角剖分由一个非结构化的三角形网格组成,该网格由 n 个点和 n 个三角形组成。

从 CSV 文件中绘制数据:

from matplotlib import pyplot as plt
from pandas import DataFrame
from matplotlib import style

df = DataFrame.from_csv('d:\Users\Raquel\Desktop/test.csv', header=0,
                    sep=';')  # unpact values into x and y using pandas to      load my csv file

style.use('ggplot')

我使用这个三角形网格能够计算密度(1/表面),然后绘制密度图。

用三角法绘制密度图

import numpy as np
from matplotlib.pyplot import (tripcolor, triplot, scatter,
show, title, savefig, colorbar)
from matplotlib.tri import Triangulation, TriAnalyzer

# Coordinates
x = df['x'].values
y = df['y'].values

# Triangulation
tri = Triangulation(x, y)

# Coordinates of the edges
ii1, ii2, ii3 = tri.triangles.T
x1 = x[ii1] ; y1 = y[ii1]
x2 = x[ii2] ; y2 = y[ii2]
x3 = x[ii3] ; y3 = y[ii3]

# Surfaces
surf = 0.5*np.abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))

# Density
dens = 1.0/(surf*3) # 3 points per triangle

# Plot
xd = (x1+x2+x3)*1.0/3.
yd = (y1+y2+y3)*1.0/3.


tripcolor(xd, yd, dens, cmap='cool')
colorbar()
title('Density Map')
savefig('density.png')
show()

地图不能很好地表示我的点的密度,我不知道如何改进它......代码有问题吗?

注意: 这是我的密度图的图像: http://postimg.org/image/3y1g90nwd/c8d2af55/

这是原图: http://postimg.org/image/lqn1b8lmx/6dca1266/

【问题讨论】:

  • Mraquel,您可以将密度图上传到其他服务并在此处发布链接。
  • 非常感谢@CristianoAraujo
  • 你想在这张图中显示什么?
  • 我正在尝试显示热点的密度(原始图像的棕色点)@CristianoAraujo
  • 您是否尝试将颜色映射应用于图像?也许它可以确定你需要什么

标签: python triangulation delaunay


【解决方案1】:

使用一些密度估计技术而不是使用三角测量会更有意义,例如

使用scipy进行高斯核密度估计

基本上(乍一看),您似乎将所有三角形视为对密度的相同贡献,因此非常远的点对表面密度的贡献相同。如果你选择一个简单的距离阈值来丢弃大三角形的边缘,你可以这样做,这样你就不会连接任意远距离的点。或者,如果您使用适当的密度估计技术,那么您将获得更好、更自然的结果。

【讨论】:

  • 我已经使用了高斯核密度估计,现在我正在尝试一种不同的方法。您认为 Delaunay 三角剖分方法对于密度图来说是个好主意吗? @eqzx
  • 高斯内核的 KDE 出了什么问题?如果两个点都存在于数据集中,则您对三角剖分所做的操作似乎等同于 KDE 内核 k([x1,y1], [x2,y2]) = 1,否则为 0
猜你喜欢
  • 2020-08-19
  • 2014-07-29
  • 2021-02-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多