R 如何将颜色应用于ggplot2中的函数
我有一个数据框,我喜欢打印,但ggplot不接受我在AES中添加颜色。我得到的不是3个不同的图,而是一个图。我期待3个不同的图表。有人能看出我做错了什么吗R 如何将颜色应用于ggplot2中的函数,r,ggplot2,R,Ggplot2,我有一个数据框,我喜欢打印,但ggplot不接受我在AES中添加颜色。我得到的不是3个不同的图,而是一个图。我期待3个不同的图表。有人能看出我做错了什么吗 df <- data.frame( xNames= c("lisa", "frank", "johnny"), coef_a = c(20,25,30), coef_b = c(1,3,5) ) ggplot(data=df, aes(color= xNames
df <- data.frame( xNames= c("lisa", "frank", "johnny"),
coef_a = c(20,25,30),
coef_b = c(1,3,5) )
ggplot(data=df, aes(color= xNames) ) +
stat_function( fun = function(x) (df$coef_a*x) /(df$coef_b+x), size=1,linetype =
"dashed")
+ xlim(0, 10)
如果要为
xNames
中的每个值显示不同的图表,则需要使用facet\u wrap
而不是aes(color)
<代码>颜色在aes
中使用时,将变量中的每个值映射为不同的颜色facet_wrap
为变量中的每个值创建一个图表
df <- data.frame(
xNames = c("lisa", "frank", "johnny"),
coef_a = c(20, 25, 30),
coef_b = c(1, 3, 5)
)
ggplot(data = df) +
stat_function(
fun = function(x)
(df$coef_a * x) / (df$coef_b + x),
size = 1,
linetype =
"dashed"
) +
xlim(0, 10) +
facet_wrap(~ xNames)
df问题在于stat_function
中的fun
采用单个向量变量,并为x轴上的每个点返回y值向量。它不会映射到单个组。有很多方法可以解决这个问题——请参阅和
通常,通过使用计算结果创建新的数据框并进行打印,可以获得更好的控制:
fun <- function(x, a, b) (a * x) / (b + x)
xvals <- seq(0, 10, 0.1)
yvals <- mapply(function(a, b) fun(xvals, a, b), a = df$coef_a, b = df$coef_b, SIMPLIFY = F)
yvals <- do.call(c, yvals)
groups <- rep(df$xNames, each = length(xvals))
df2 <- data.frame(xvals = rep(xvals, 3), yvals, groups)
ggplot(data = df2, aes(xvals, yvals, colour = groups)) +
geom_line(size = 1, linetype = "dashed")
fun这不是艾伦·卡梅隆通常给你的解决方案,但也许只是为了帮助你看看它在ggplot
中的效果
库(ggplot2)
你收到了什么错误信息?如果您发布问题的reprex
,这会很有帮助。
fun <- function(x, a, b) (a * x) / (b + x)
xvals <- seq(0, 10, 0.1)
yvals <- mapply(function(a, b) fun(xvals, a, b), a = df$coef_a, b = df$coef_b, SIMPLIFY = F)
yvals <- do.call(c, yvals)
groups <- rep(df$xNames, each = length(xvals))
df2 <- data.frame(xvals = rep(xvals, 3), yvals, groups)
ggplot(data = df2, aes(xvals, yvals, colour = groups)) +
geom_line(size = 1, linetype = "dashed")