根据另一个数字变量为绘图中的点着色

时间:2014-07-28 18:10:55

标签: r colors plot

我正在绘制“wt”与“mpg”(来自“mtcars”数据集),现在我想根据“hp”为点着色。 我想采用绿色并调整其阴影,因此高“hp”值将变为深绿色,低值将变为淡绿色。

没有颜色的基础图:

data(mtcars)
plot <- with(mtcars, {
  plot(wt, mpg, xlab="Weight", ylab="Miles per Gallon")
})

在R-Base中执行此操作的最简单方法是什么?那ggplot2 /格呢呢?

3 个答案:

答案 0 :(得分:1)

基础R

您可以使用colorRamp创建一个返回绿色阴影的函数:

cr <- colorRamp(c("green", "black"))

然后你可以使用:

进行绘图
with(mtcars, {
    plot(wt, mpg, col = rgb(cr(hp / max(hp)), max=255),
         xlab="Weight", ylab="Miles per Gallon", pch=20)
})

cr接受0到1之间的值,这就是我除以max(hp)

的原因

<强> GGPLOT2

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(aes(col = hp))
p + scale_colour_gradientn(colours=c("green","black")) + theme_bw()

<强>图解

enter image description here

希望它有所帮助,

亚历

答案 1 :(得分:0)

使用类似的东西:

library(ggplot2)   
ggplot(mtcars, aes(x=wt, y=mpg))+geom_point(aes(col=hp))

将颜色更改为您想要的颜色。也许thisthis可以提供帮助。

答案 2 :(得分:0)

查看classInt包。它提供了几种将数值变量hp转换为间隔的方法。包RColorBrewer提供合理的调色板。例如,

library(classInt)
library(RColorBrewer)
n <- 5 # number of levels 
hp_ints <- classIntervals(mtcars[, "hp"], n, style="quantile") 
# other options for style include "fixed", "sd", "equal", "pretty", "quantile", "kmeans", "hclust", "bclust", "fisher", or "jenks"
pal <- brewer.pal(n, "Greens")
hp_col <- pal[findInterval(mtcars[, "hp"], hp_ints$brks, all.inside=TRUE)]
plot(mpg~wt, data=mtcars, col=hp_col, pch=19)