【问题标题】:how to visualize high volumn 3 dimensional data如何可视化大量 3 维数据
【发布时间】:2014-06-26 05:34:41
【问题描述】:

我有如下数据集:

import numpy as np
from pandas import DataFrame
mypos = np.random.randint(10, size=(100, 2))
mydata = DataFrame(mypos, columns=['x', 'y'])
myres = np.random.rand(100, 1)
mydata['res'] = myres

res变量是连续的,x和y变量是整数表示 职位(因此大部分重复), res 表示位置对之间的相关性。

我想知道可视化此数据集的最佳方法是什么? 已经考虑过的可能方法:

  1. 散点图,res 变量通过颜色渐变进行可视化。
  2. 平行坐标图。

当职位数量变大时,第一种方法会出现问题, 因为 res 变量的高值(这是我们关心的值)会淹没在 小点。

第二种方法可能很有希望,但我在制作它时遇到了麻烦。 我已经尝试过 pandas 模块中的 parallel_coordinates 函数, 但它的行为不像我想要的那样。 (在这里看到这个问题: parallel coordinates plot for continous data in pandas )

【问题讨论】:

  • 应该用“r”标记吗?似乎它更像是一个 Python Q。
  • 是的,但我不介意在 R 中做,只要它能完成工作。
  • 成对十六进制图?
  • 这也太“模糊”了。
  • parcoordparallelplot 在 R 中为我工作。当有数千行时,使用透明颜色会有所帮助。也许您应该在已经完成数据创建的情况下重新发布。那么它将是编码问题,而不是“推荐方法问题”。

标签: python r plot pandas data-visualization


【解决方案1】:

我希望这有助于在 R 中找到解决方案。祝你好运。

# you need this package for the colour palette
library(RColorBrewer)

# create the random data
dd <- data.frame(
    x = round(runif(100, 0, 10), 0),
    y = round(runif(100, 0, 10), 0),
    res = runif(100)
)

# pick the number of colours (granularity of colour scale)
nColors <- 100 

# create the colour pallete
cols <-colorRampPalette(colors=c("white","blue"))(nColors)

# get a zScale for the colours
zScale <- seq(min(dd$res), max(dd$res), length.out = nColors)

# function that returns the nearest colour given a value of res
findNearestColour <- function(x) {
    colorIndex <- which(abs(zScale - x) == min(abs(zScale - x)))
    return(cols[colorIndex])
}

# the first plot is the scatterplot
### this has problems because points come out on top of eachother
plot(y ~ x, dd, type = "n")
for(i in 1:dim(dd)[1]){
    with(dd[i,],
        points(y ~ x, col = findNearestColour(res), pch = 19)
    )
}

# this is your parallel coordinates plot (a little better)
plot(1, 1, xlim = c(0, 1), ylim = c(min(dd$x, dd$y), max(dd$x, dd$y)), 
     type = "n", axes = F, ylab = "", xlab = "")
for(i in 1:dim(dd)[1]){
    with(dd[i,],
        segments(0, x, 1, y, col = findNearestColour(res))
    )
}

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 2017-09-14
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2018-04-01
    • 2021-07-06
    相关资源
    最近更新 更多