当我制作盒子图时,我也喜欢在后台显示原始数据,如下所示:
library(ggplot2)
library(RColorBrewer)
cols = brewer.pal(9, 'Set1')
n=10000
dat = data.frame(value=rnorm(n, 1:4), group=factor(1:4))
ggplot(dat, aes(x=group, y=value, color=group, group=group)) +
geom_point(position=position_jitter(width=0.3), alpha=0.1) +
scale_color_manual(values=cols) +
geom_boxplot(fill=0, outlier.size=0)
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢它当点太密集时我的盒子图完全消失了.我知道我可以调整alpha
,这在某些情况下很好,但是当我的团队密度不同时(例如,如果我减少alpha
到最轻的组会完全消失,以便最暗的组不会遮挡框图) .我正在尝试做的是系统地改变箱形图的颜色 - 可能有点暗 - 这样即使背景点最大化了alpha,它们也会出现.例如:
plot(1:9, rep(1, 9), pch=19, cex=2, col=cols)
cols_dk = rgb2hsv(col2rgb(brewer.pal(9, 'Set1'))) - c(0, 0, 0.2)
cols_dk = hsv(cols_dk[1,], cols_dk[2,], cols_dk[3,])
points(1:9, rep(1.2, 9), pch=19, cex=2, col=cols_dk)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到一种方法来伪造一个不同scale_color
的geom_boxplot
层(如果有办法,这似乎是最简单的路线).我也没有能够找到一种简单的语法来系统地调整颜色,就像你可以轻松地抵消连续美学一样aes(x=x+1)
.
我能得到的最接近的是完全复制因子的水平......
ggplot(dat, aes(x=group, y=value, color=group, group=group)) +
geom_point(position=position_jitter(width=0.3), alpha=0.1) +
scale_color_manual(values=c(cols[1:4], cols_dk[1:4])) …
Run Code Online (Sandbox Code Playgroud) 我想使用ggplot2绘制一些不同的数据项,使用两个不同的色标(一个连续和一个离散来自两个不同的df).我可以准确地描绘出我个人喜欢的方式,但我不能让它们一起工作.看起来你不能在同一个情节中运行两种不同的色标吗?我在这里和这里看到过类似的问题,这让我相信我想要实现的目标在ggplot2中是不可能的,但是如果我错了,我想说明我的问题,看看是否有变通.
我有一些GIS流数据,附有一些分类属性,我可以绘制(p1
在下面的代码中)以获得:
我还有一组具有连续响应的位置,我也可以绘制(p2
在下面的代码中)以获得:
但是我无法将两者结合起来(
p3
在下面的代码中).我收到这个错误
比例误差[[prev_aes]]:尝试选择少于一个元素
注释掉该行scale_colour_hue("Strahler order") +
会将错误更改为
错误:提供给连续刻度的离散值
基本上似乎ggplot2对geom_path
呼叫和geom_point
呼叫使用相同的比例类型(连续或离散).因此,当我将离散变量传递 factor(Strahler)
给scale_colour_gradientn
比例时,绘图失败.
有没有解决的办法?如果有data
一个scale函数的参数告诉它应该映射或设置属性,那将是惊人的.这甚至可能吗?
非常感谢和可重现的代码如下:
library(ggplot2)
### Download df's ###
oldwd <- getwd(); tmp <- tempdir(); setwd(tmp)
url <- "http://dl.dropbox.com/u/44829974/Data.zip"
f <- paste(tmp,"\\tmp.zip",sep="")
download.file(url,f)
unzip(f)
### Read in data ###
riv_df <- read.table("riv_df.csv", sep=",",h=T)
afr_df <- read.table("afr_df.csv", sep=",",h=T)
vil_df <- read.table("vil_df.csv", sep=",",h=T)
### Min and max for plot area ###
xmin …
Run Code Online (Sandbox Code Playgroud)