Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggplot将形状指定给n条线中的n-1点_R_Ggplot2 - Fatal编程技术网

R 使用ggplot将形状指定给n条线中的n-1点

R 使用ggplot将形状指定给n条线中的n-1点,r,ggplot2,R,Ggplot2,我想在一个图形中绘制3条线,对于其中的两条线,使用形状来标记确定这些线的点。我无法在不失去形状控制的情况下做到这一点。有没有一种方法可以不使用形状标记一条线的点,而不失去对其他线点形状设置的控制 考虑以下示例: years = 2001:2005 A = c(2, 3, 2.5, 2, 2.2) B = c(2, 2.3, 2.8, 2, 3.2) C = rep(2.1, 5) DT = data.table(years, A, B, C) mDT = melt(DT, id.vars = '

我想在一个图形中绘制3条线,对于其中的两条线,使用形状来标记确定这些线的点。我无法在不失去形状控制的情况下做到这一点。有没有一种方法可以不使用形状标记一条线的点,而不失去对其他线点形状设置的控制

考虑以下示例:

years = 2001:2005
A = c(2, 3, 2.5, 2, 2.2)
B = c(2, 2.3, 2.8, 2, 3.2)
C = rep(2.1, 5)
DT = data.table(years, A, B, C)
mDT = melt(DT, id.vars = 'years', value.name = "Value", variable.name = "Parameter")
我想通过线图和点直观地表示这些数据。对于参数A和B,我希望点具有形状。对于C,我不希望它们有一个形状。用ggplot我试过:

但是A和B的形状是4s和6s。这也不起作用,因为我没有足够的值

  scale_shape_manual(values = c(4, 6))
当你使用

scale_shape_manual(values = c("A" = 4, "B" = 6, "C" = ""))
它将向量中的所有值强制为字符,因为向量只能保存相同数据类型的值。改用

scale_shape_manual(values = c("A" = 4, "B" = 6, "C" = NA))
NA不会改变所有其他值都是数字的事实

scale_shape_manual(values = c("A" = 4, "B" = 6, "C" = NA))