标签: data-visualization

Delaunay使用python从3D表面进行三维点的三角测量?

我有一个3D点集合.这些点以恒定水平(z = 0,1,...,7)进行采样.图像应该清楚:

点集合

这些点是一个(N, 3)叫做numpar形状的ndarray X.上面的图使用以下方式创建:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

X = load('points.npy')
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_wireframe(X[:,0], X[:,1], X[:,2])
ax.scatter(X[:,0], X[:,1], X[:,2])
plt.draw()
Run Code Online (Sandbox Code Playgroud)

我想改为仅对该物体的表面进行三角测量,并绘制曲面.但是,我不想要这个物体的凸包,因为这会丢失我希望能够检查的细微形状信息.

我试过了ax.plot_trisurf(X[:,0], X[:,1], X[:,2]),但这导致了下面的混乱:

食堂

有帮助吗?

示例数据

以下是生成代表问题的3D数据的代码段:

import numpy as np
X = []
for i in range(8):
    t = np.linspace(0,2*np.pi,np.random.randint(30,50))
    for j in range(t.shape[0]):
        # random circular objects...
        X.append([
            (-0.05*(i-3.5)**2+1)*np.cos(t[j])+0.1*np.random.rand()-0.05,
            (-0.05*(i-3.5)**2+1)*np.sin(t[j])+0.1*np.random.rand()-0.05,
            i
        ])
X = np.array(X)
Run Code Online (Sandbox Code Playgroud)

来自原始图像的示例数据

这是原始数据的pastebin:

http://pastebin.com/YBZhJcsV

这是沿着常数z的切片:

这里不输入图像描述

python numpy data-visualization matplotlib

21
推荐指数
2
解决办法
9533
查看次数

3D库建议用于交互式空间数据可视化?

我们的软件会生成大量地理参考和记录的数据.我们正在考虑改进可视化的方法,并在3D视图中显示(处理过的)数据,因为它的地理参考,似乎是一个好主意.

在基于Delphi-/C++ Builder的Windows应用程序中构建这些可视化时,我正在寻找有关哪些3D库最适合作为基础的SO建议.我会尽可能地加上赏金.

数据

  • 随时间记录(数小时到数天),并进行GPS标记.因此,随着时间的推移,我们有很多数据.
  • 是空间:它代表地球的真实3D元素,例如陆地,或地球周围物体的3D元素.
  • 数量很大:例如,我们可以拥有数十万到数百万点的点云.处理的数据可以显示为从这些点云创建的表面.

从中可以看出,基于空间的交互式3D可视化似乎是一种很好的方法.我正在设想一些可以轻松快速地在空间中导航的东西,数据将根据您正在查看的内容加载或生成.我希望我们不要尝试从头开始编写我们自己的3D库 - 对于这样的事情,必须有我们可以使用的良好的现有库.

所以,我希望有一个支持的库:

  • 良好的导航(例如,仅基于欧拉旋转的库?你可以选择'对象旋转或轻松移动吗?);
  • 现代GPU(仅着色器渲染是可以的;能够挂钩到管道中以编写将值映射到颜色并动态变化的着色器会很棒 - 想想通过颜色查找表给出颜色的数据值);
  • 动态数据/对象(数据可以在记录时添加;如果数据量太高,我们应该能够进出页面或重新创建它们,并且只显示一个合理的子集,以便无论用户的视口是什么at屏幕上有,但是其他数据可以加载/重新生成,最好是异步,或者至少在用户导航时很快.显然,数据创建依赖于我们,但是一个有这种东西钩子的库会很棒.)
  • 在技​​术上,与Delphi/C++ Builder和VCL一起使用.

图书馆

到目前为止,我已经考虑了两个主要的库 - 我正在寻找关于这些的知识渊博的意见,或者我没有考虑过的其他库.

1. FireMonkey

这是Embarcadero的新UI库,仅在XE2及更高版本中可用.我们的应用程序基于VCL,我们希望在VCL窗口中托管它; 这似乎是官方不支持但非正式工作正常,或通过第三方提供.

UI框架和3D框架与着色器等的混合听起来很棒.但是我不知道库是多么复杂,它对数据的支持是什么,它不是像立方体或球体那样简单的对象,以及它的设计是多么好.最后一个链接对图书馆的3D方面提出了重大批评 - 严重到足以说明我在编写一个非平凡的3D应用程序时,目前尚不确定它是否值得.

是否值得尝试使用FireMonkey在我们的VCL应用程序中编写新的可视化窗口?

2. GLScene

GLScene是Delphi着名的3D OpenGL框架.我自己从未使用它,所以没有经验,如何工作或设计.但是,我相信它可以很好地集成到VCL窗口中,并支持着色器和现代GPU.我不知道它的场景图或导航是如何工作的,或者是如何实现动态数据的.

它的功能列表特别提到了我感兴趣的一些东西,例如简单的旋转/移动,程序对象(暗示动态数据易于实现),以及用于拾取的辅助函数.似乎着色器只是Cg(不是GLSL或其他非特定于供应商的语言.)它还支持"纹理化的多态图像支持(允许多种格式以及程序纹理),易于扩展" - 这可能仅仅意味着许多图像格式,或者它可以指示可以动态改变纹理的某些东西,例如用于动态颜色映射.

从哪里来?

这是我所知道的Delphi或C++ Builder中唯一的两个主要3D库.我错过了吗?我不知道有利有弊吗?您是否有任何使用这些目的的经验,我们应该知道和使用哪些陷阱?

我们目前使用Embarcadero RAD Studio 2010,我们的大部分软件都是用C++编写的.我们有少量的Delphi,可能会考虑升级IDE,但我们最有可能等到64位C++编译器发布.因此,在RS2010中工作的库可能是最好的.

感谢您的意见:)我正在追求高质量的答案,所以我会尽可能多地加入赏金!

delphi 3d data-visualization c++builder

20
推荐指数
2
解决办法
3204
查看次数

将集合层次结构可视化为颜色编码图形

我最近一直在阅读关于Java和Javascript图形库的相关内容,但我还没有找到一个很好的方法来做我想做的事情.

基本上我有一组关于一堆元素的集合(最多几千).这些组可以完全或部分重叠,完全覆盖或完全彼此不相交.我想要做的是显示以下信息:

  • 集合的大小(与其他集合相关)
  • 根据其涵盖的元素计算的集合的"热量"值(颜色代码)
  • 单个图形中集合的完整拓扑(以便向用户显示重叠,交叉点等)

编辑:也许我应该举例说明我的意思是集合和元素以及部分重叠的层次结构.以下是我处理的那种集合的过度简化版本(请注意数字1- 10和字母a- hX表示彼此相当的元素):

Set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
Set2 = {1, 2, 3, 4, 5, 6}
Set3 = {1, 2, 3}
Set4 = {1, 4, 5, 6, 7}
Set5 = {a, b, c, d, e, f, g, h}
Set6 = {a, b, c, d, e}
Set7 = {a, b, c, 7}
Set8 = {2, 4, 7, 8, c, …
Run Code Online (Sandbox Code Playgroud)

javascript java data-visualization graph-algorithm

20
推荐指数
3
解决办法
2229
查看次数

什么是实时数据源?

我正在开发一个关于实时可视化的演示,我正在尝试开箱即用.看起来任何大数据实时演示都在Twitter或流量数据上.是否有其他选项可以发布实时数据(免费)?

谢谢

visualization data-visualization real-time demo

20
推荐指数
3
解决办法
2万
查看次数

ggplot2中的迷你图

Tufte Sparklines(如他的美丽证据所示)已作为YaleToolkit的一部分在基础图形中复制,并由于这个问题而进一步完善.迷彩线也在格子中完成,作为我的小方案项目Tufte in R的一部分(自我推销并非预期).我现在的目标是在ggplot2中复制Tufte 迷你图.有一些脚本在Gist上浮动,也作为对SO的这个问题的回复,但没有一个为制作可复制的迷你图集提供了坚实的基础.

现在,我希望那些多个迷你图看起来像这样(它是在基本图形中完成的,代码在这里可用) - 点代表最大/最小值,右端的数字是特定时间序列和灰色带的最终值显示粗略的分位数范围:

在此输入图像描述

我不是很远,但我坚持最小/最大值和标签的分配:

library(ggplot2)
library(ggthemes)
library(dplyr)
library(reshape)
library(RCurl)
dd <- read.csv(text =
  getURL("https://gist.githubusercontent.com/GeekOnAcid/da022affd36310c96cd4/raw/9c2ac2b033979fcf14a8d9b2e3e390a4bcc6f0e3/us_nr_of_crimes_1960_2014.csv"))
d <- melt(dd, id="Year")
names(d) <- c("Year","Crime.Type","Crime.Rate")
dd <- group_by(d, Crime.Type) %>% 
  mutate(color = (min(Crime.Rate) == Crime.Rate | max(Crime.Rate) == Crime.Rate))
ggplot(dd, aes(x=Year, y=Crime.Rate)) + 
  facet_grid(Crime.Type ~ ., scales = "free_y") + 
  geom_line(size=0.3) + geom_point(aes(color = color)) + 
  scale_color_manual(values = …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 tufte

20
推荐指数
1
解决办法
2879
查看次数

"插值"不是一个功能

我是D3的新手并在几张图表上进行实验.在使用D3 V4构建折线图时,我遇到了以下错误.

d3.line(...).x(...).y(...).interpolate不是函数

我认为这个错误是由于D3 v4中的函数插值不可用.如果有人可以帮助我使用插值函数的替换函数,那将会很棒.

我的代码在以下链接中

https://ghostbin.com/paste/ztans

javascript data-visualization d3.js

20
推荐指数
1
解决办法
1万
查看次数

动画点直方图,通过观察构建观察(在 R 中使用 gganimate)

我想从正态分布中采样点,然后使用gganimate包一个一个地建立一个点图,直到最后一帧显示完整的点图。

适用于约 5,000 - 20,000 个点的更大数据集的解决方案至关重要。

这是我到目前为止的代码:

library(gganimate)
library(tidyverse)

# Generate 100 normal data points, along an index for each sample 
samples <- rnorm(100)
index <- seq(1:length(samples))

# Put data into a data frame
df <- tibble(value=samples, index=index)
Run Code Online (Sandbox Code Playgroud)

df 看起来像这样:

> head(df)
# A tibble: 6 x 2
    value index
    <dbl> <int>
1  0.0818     1
2 -0.311      2
3 -0.966      3
4 -0.615      4
5  0.388      5
6 -1.66       6
Run Code Online (Sandbox Code Playgroud)

静态图显示了正确的点图:

# Create static version
plot <- ggplot(data=df, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 gganimate

20
推荐指数
3
解决办法
787
查看次数

在Python中,如何从一些源数据轻松生成图像文件?

我有一些我想要想象的数据.源数据的每个字节大致对应于图像的像素值.

使用Python生成图像文件(位图?)的最简单方法是什么?

python data-visualization image

19
推荐指数
2
解决办法
5万
查看次数

Python中的树形图可视化

我有兴趣绘制树图:

树图示例

在Python中创建一个最简单的方法是什么?在给定适当的输入数据的情况下,是否有可以生成此类图形的库?

python data-visualization treemap

19
推荐指数
3
解决办法
2万
查看次数

Python中的Plotly动画滑块

我试图在Jupyter笔记本中重新创建这个例子.

https://plot.ly/python/gapminder-example/

但是收到了这个错误:

PlotlyDictKeyError: 'slider' is not allowed in 'layout'

Path To Error: ['layout']['slider']

Valid attributes for 'layout' at path ['layout'] under parents ['figure']:

    ['angularaxis', 'annotations', 'autosize', 'bargap', 'bargroupgap',
    'barmode', 'barnorm', 'boxgap', 'boxgroupgap', 'boxmode', 'calendar',
    'direction', 'dragmode', 'font', 'geo', 'height', 'hiddenlabels',
    'hiddenlabelssrc', 'hidesources', 'hoverlabel', 'hovermode', 'images',
    'legend', 'mapbox', 'margin', 'orientation', 'paper_bgcolor',
    'plot_bgcolor', 'radialaxis', 'scene', 'separators', 'shapes',
    'showlegend', 'sliders', 'smith', 'ternary', 'title', 'titlefont',
    'updatemenus', 'width', 'xaxis', 'yaxis']

Run `<layout-object>.help('attribute')` on any of the above.
'<layout-object>' is the object at ['layout']
Run Code Online (Sandbox Code Playgroud)

动画运行时没有将滑块dict添加到布局中,滑块可见且可操作,但不会更改图形.当我移动滑块时,它会在控制台中产生以下错误: …

python animation data-visualization slider plotly

19
推荐指数
1
解决办法
2411
查看次数