- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
警告...非常新手的问题如下:
我试图绘制数千个(X,Y)点的相当规则的分布,每个点与一个值相关联,我们称之为Z,它在-20到+20之间非常不规则地变化。我对平滑不感兴趣;我希望 Z 点值根据平滑变化的调色板进行绘制,就像 Gnuplot 使用适当的平滑调色板所做的那样。我已经尝试过基本 R、ggplot2 和latticeExtra,并且尽我所能,我可以想出以下几乎可以满足我想要的功能:
library(lattice)
library(latticeExtra)
library(colorRamps)
df = read.table(file"whatever", header=T)
levelplot(Z~X*Y, df, panel=panel.levelplot.points, cex=0.2,
col.regions=colorRampPalette(c("red","white","blue"))(50))
一个数据点如下所示:1302525 225167 -3.5
当我将最后一个代码行中的“50”绘制为 3 的数据帧时,我得到了红色、白色和蓝色的可预测 R 回收行为,重复五次,第 16 个颜色条段为白色。将 3 更改为 7 会导致更多的红色和蓝色色调,从而创建 2 个重复颜色范围段,并在颜色范围尝试回收时留下两种微红色。这表明增大该数字会导致颜色分级更精细。但如果我输入的数字大于 16,这就是我得到的全部,16 个彩色段,从红色、白色、蓝色均匀变化。但我希望色阶更精细,并且在完美的世界中,强制 Z 为零为白色。
到目前为止,我使用 R 的经验是,当我无法做如此简单的事情时,我错过了一个非常基本的概念。它是什么?
最佳答案
就晶格而言,您可以使用 RColorBrewer 设置调色板。 (甚至 colorspace )。使用 @Chase 提供的示例,但 z
为正值:
dat <- data.frame(x = rnorm(1000), y = rnorm(1000), z = sample(0:40, 1000, TRUE))
library(RColorBrewer)
# see, e.g.
# display.brewer.all(9, type="seq")
# display.brewer.pal(11, "RdBu")
my.col <- colorRampPalette(brewer.pal(11, "RdBu"))(diff(range(dat$z)))
xyplot(y ~ x, data=dat, col=my.col[dat$z], pch=19, alpha=.5)
请注意,这里还需要通过插值来增加可用颜色的范围。另外,使用 levelplot()
,您可能想使用 cut=
和 pretty=
。
关于r - 在 r、ggplot2、lattice 或latticeExtra 中创建更连续的调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181653/
我是一名优秀的程序员,十分优秀!