假设我有以下数据,其中汇总了预测因子(X)和调节因子(Z)在低值和高值时的因变量(Dv)的值

dfx <- data.frame(x = rep(c(-0.909, 0.909),2),
                  z = c(-0.676, -0.676, 0.676, 0.676),
                  dv = c(448.8, 464.4, 462.8, 472.1))

我想通过自定义both线条类型and标记来绘制dv作为预测器和调节器的函数

library(ggplot2)
dfx$z <- as.factor(dfx$z) # turn the moderator as a factor

ggplot(dfx, aes(x=x, y = dv, colour=z, shape=z))+
  geom_line()+
  geom_point()+
  scale_y_continuous("dv", limits = c(440,480))+
  theme_classic()+
  scale_colour_manual  ("A title", values=c("black", "black"), labels=c("-1SD", "+1SD"))+
  scale_shape_manual   ("A title", values=c(2,15),labels=c("-1SD","+1SD"))

enter image description here

但是,我也想自定义线型.

当我加上:

ggplot(dfx, aes(x=x, y = dv, colour=z, shape=z, linetype=z)

下面的情节浮出水面.然而,我既不能隐藏第二个标签,也不能通过scale_linetype_manual个标签对其进行自定义

enter image description here

有什么办法可以解决这个问题吗?我搜索了社区,但没有找到任何方法来克服这个问题.此外,当我 suppress 第二个标签时,图例关键字不会显示线类型和标记. 如有任何提示,将不胜感激.

推荐答案

从你的描述来看,我猜你想要这样的东西:

library(ggplot2)

ggplot(dfx, aes(x=x, y = dv, shape=z, linetype=z)) +
  geom_line()+
  geom_point()+
  scale_y_continuous("dv", limits = c(440,480))+
  theme_classic()+
  scale_linetype_manual("A title",
                      values=c(1, 3),
                      labels=c("-1SD", "+1SD")) +
  scale_shape_manual("A title",
                     values=c(2,15),
                     labels=c("-1SD","+1SD"))

result

R相关问答推荐

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

如何动态更新selectizeInput?

如何使用STAT_SUMMARY向ggplot2中的密度图添加垂直线

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

将饼图插入条形图

函数可以跨多个列搜索多个字符串并创建二进制输出变量

在列表中排列R数据框中的列顺序

安全地测试文件是否通过R打开

将数据集旋转到长格式,用于遵循特定名称模式的所有变量对

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

有毒元素与表观遗传年龄的回归模型

按镜像列值自定义行顺序

按组使用dummy r获取高于标准的行的平均值

在不重复主题的情况下重新排列组

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

禁用时,SelecizeInput将变得不透明

如何将字符类对象中的数据转换为R中的字符串

在不带max()的data.table中按组查找最后一个元素

Gggvenn为Venn增加了不存在的价值