我有以下R代码:
ggplot(data=curve,aes(x = expected, y=result/games)) +
geom_point(aes(x=-expected, colour=games)) +
stat_function(fun=funx, geom="line", col="blue") +
scale_colour_continuous(name="Number of games")
然而,在我的传奇中,我得到的价值如1e + 05,2e + 05 .. 6e + 05等。 我的问题是某些值非常低(从0到100),有些值非常大(高达600000)。我打算使用“break”来指定范围从0-10,11-100,1001-5000等。但是当我把它放到scale_colour_continuous中时,只有图例改变了,而不是我的图上的颜色。
更新:
我使用了建议的解决方案但是我收到错误:
Warning messages:
1: In Ops.factor(result, games) : / not meaningful for factors
2: In Ops.factor(result, games) : / not meaningful for factors
3: In Ops.factor(result, games) : / not meaningful for factors
答案 0 :(得分:2)
如果您想要对比例进行离散化,那么最简单的方法是更改变量(或创建新变量)并使用该变量进行绘图。 ggplot本身不能将连续变量转换为离散变量。
curve$games.d <- cut(curve$games, breaks=c(0,10,100,5000,Inf),
labels=c("0-10", "11-100", "101-5000", "5000+"), include.lowest=TRUE)
然后使用colour=games.d
进行绘图,如果您需要更多地调整比例(标签等),请使用scale_colour_discrete
。
更新
感谢dput
输出。它清楚地说明了错误的位置。
> str(curve)
'data.frame': 223 obs. of 4 variables:
$ expected: int -402 -400 -391 -390 -386 -385 -383 -380 -379 -375 ...
$ result : Factor w/ 194 levels "0","0,5","1",..: 3 3 3 30 2 3 2 3 3 2 ...
$ games : int 1 1 1 2 1 1 2 1 1 1 ...
$ colgame : Factor w/ 4 levels "0","100","5000",..: 1 1 1 1 1 1 1 1 1 1 ...
请注意result
是一个因素。我假设你使用的是小数分隔符是逗号而不是句点的符号。这些必须转换为数字(稍后将进一步说明,以便首先避免这种情况)
curve$result <- as.numeric(gsub(",",".",as.character(curve$result)))
现在您的图表代码将是:(由于我没有您的函数stat_function
,我注释了funx
调用。)
ggplot(data=curve,aes(x = expected, y=result/games)) +
geom_point(aes(x=-expected, colour=colgame)) +
#stat_function(fun=funx, geom="line", col="blue") +
scale_colour_discrete(name="Number of games")
关于如何首先避免这种情况,假设您从CSV文件中读取此内容,请查看read.csv2
或dec
家族的read.table
参数用于指定数字的十进制说明符的函数。
答案 1 :(得分:2)
如果你提供一个可重复的例子,我们会更容易提供帮助。而且我不确定你想要什么。但有些指针要做你想做的事。
如果您想使用休息符并更改颜色,则需要将颜色映射到美学。
来自Brian Diggs的借贷示例:
curve$games.d <- cut(curve$games, breaks=c(0,10,100,5000,Inf),
labels=c("0-10", "11-100", "101-5000", "5000+"), include.lowest=TRUE)
ggplot(data=curve,aes(x = expected, y=result/games, colour = games.d)) +
geom_point(aes(x=-expected)) +
stat_function(fun=funx, geom="line", col="blue") +
scale_colour_continuous(name="Number of games")
HTH