R意大利面图-使用连接点更改线颜色
意大利面地块,带有geom_线和geom_平滑。 我必须根据“R意大利面图-使用连接点更改线颜色,r,R,意大利面地块,带有geom_线和geom_平滑。 我必须根据“时间步长””绘制“f0”,线条根据因子“部分””改变颜色,而不在其两个级别“os”和“fv”之间断开连接。当“零件”更改时,平滑也会消失 我的数据集的结构: structure(list(time_steps = 1:20, f0.2 = c(203.61, 204.62, 204.23, 207.71, 198.5, 184.43, 185.15, 182.13, 183.2, 189.47, 188.88, 188.43, 1
时间步长”
”绘制“f0
”,线条根据因子“部分”
”改变颜色,而不在其两个级别“os
”和“fv
”之间断开连接。当“零件
”更改时,平滑也会消失
我的数据集的结构:
structure(list(time_steps = 1:20, f0.2 = c(203.61, 204.62, 204.23,
207.71, 198.5, 184.43, 185.15, 182.13, 183.2, 189.47, 188.88,
188.43, 188.53, 189.41, 191.15, 193.76, 196.6, 199.44, 201.45,
202.53), part = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("os",
"fv"), class = "factor")), row.names = c(NA, -20L), class = "data.frame")
我写的代码是:
ggplot (df, aes(time_steps, f0, colour = (part))) +
geom_line(alpha = 0.1) + geom_smooth(size = 2)
我用断开的线得到的图:
是否有人提出了解决此问题的建议?按颜色打断线图将始终留下一个间隙,除非零件的两个值之间存在共同点。该间隙表示
部分==“os”
没有时间步长值>10
,部分==“fv”
没有时间步长值<12
使用一些看起来像你的模拟数据,这里有一个解决方法。它包括两次使用geom_线
,一次不使用颜色贴图,以便连接点。然后我使用了两次stat\u smooth()
(一次用于线条,一次用于功能区),因为它可以更好地控制绘图的外观
df <- data.frame(time_steps = 1:20,
f0 = round(runif(20, 190, 210)),
part = c(rep("os", 10), rep("fv", 10)))
ggplot(df) +
geom_line(aes(x = time_steps, y = f0), color = "black", size = 1.5, alpha = 0.5) +
geom_line(aes(x = time_steps, y = f0, color = part), size = 1.5, alpha = 1) +
stat_smooth(geom ='line', aes(x = time_steps, y = f0), color = "black", size = 1.5, linetype = 2, alpha=0.5) +
stat_smooth(geom = 'ribbon', aes(x = time_steps, y = f0), color = "NA", fill = "black", alpha = 0.1)
df您可以使用dput(您的数据)
并将其粘贴到您的问题中吗str()
不提供可重复使用的数据。此外,按颜色打断线图将始终留下一个间隙,除非部分的两个值之间有一个共同点。该间隙表示部分==“os”
没有时间步长值>10
,而部分==“fv”
没有时间步长值<12
。您好,非常感谢!这是数据帧:结构(列表(时间步长=1:20,f0.2=c(203.61204.62204.23207.71198.5184.43185.15182.13183.2189.47188.88188.43188.53189.41191.15193.76196.6199.44201.45202.53),部分=结构(c(1L、1L、1L、1L、1L、1L、1L、1L、1L、2L、2L、2L、2L、2L、2L、2L、2L、2L、.Label=c(“os”、“fv”)、class=“factor”)、row.names=c(NA,-20L)、class=“data.frame”)实际上在10和12之间的时间步长有“11”值(第一个值移到“fv”,所以从1到10是“os”,从11到20是“fv”)。此外,我需要将生成的线条平滑,并使其看起来像一条曲线,就像我贴在帖子上的图片一样。你有什么建议吗?非常感谢