我真的很挣ggplot2中geom_path的大小和颜色参数。让我先与你分享我的数据和代码(简短),然后展示我得到的情节,然后解释我想要获得的情节。我现在对这个输出感到困惑:
# the data - x and y coordinates to plot
x_loc = c(39.29376, 39.44371, 39.59578, 39.7439, 39.88808, 40.18122,
40.92207, 41.91831, 42.09564, 42.27909, 81.77751, 81.79779, 81.81031,
81.81723, 81.81997, 81.81846)
y_loc = c(21.02953, 20.91538, 20.80633, 20.69479, 20.58158, 20.37095,
19.87498, 19.38372, 19.31743, 19.26005, 35.55103, 35.64354, 35.7384,
35.82535, 35.9067, 35.98656)
# creating the factor with which to base size and color off of
end = length(x_loc)
distances = sqrt(((x_loc[2:end] - x_loc[1:(end-1)]) ^ 2) + ((y_loc[2:end] - y_loc[1:(end-1)]) ^ 2))
my_colors = c('black', ifelse(distances > 0.5, 'red', 'black'))
# and now for my plot
ggplot() +
geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc, y = y_loc, col = as.factor(my_colors), size = as.factor(my_colors)),
alpha = 1) +
scale_color_manual(values = c("black", "red")) +
scale_size_manual(values = c(1.5, 0.45))
这是我得到的输出图,如果你没有运行我的代码:
这是我得到的,但这不是我想要的。我的目标是用连接点的线绘制坐标点,因此我为geom_point()和geom_path()使用单独的图层。然而,对于在距离矢量中测量的非常长的线(连续坐标之间的长距离),我希望线颜色为红色并且线要薄。对于短距离,我希望线条颜色为黑色,并且线条要更粗。
上面的情节有什么不对,长黑线不应该在那里。还有一个额外的黑线绘图也不应该出现(其他红线在哪里)。
(看起来通过将坐标分成组(按大小和颜色分组,均使用my_colors向量设置),geom_path为两个独立的点组创建两个单独的路径,每个点具有相应的大小并且颜色正确。但是,这会导致错误的情节)
如果我没有正确解释,请告诉我。不知何故,我真的想深究这一点。我现在将手动创建一个类似于我想要的图表,并且很快就会用它进行编辑!
谢谢!
编辑:这是我希望得到的:这是通过作弊创造的(使用以下5个geom_path图层,我可以通过16个坐标,而不是100K)来创作作弊:
ggplot() + geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc[1:6], y = y_loc[1:6]),
color = 'black',
size = 1.5,
alpha = 1) +
geom_path(aes(x = x_loc[6:8], y = y_loc[6:8]),
color = 'red',
size = 0.45,
alpha = 1) +
geom_path(aes(x = x_loc[8:10], y = y_loc[8:10]),
color = 'black',
size = 1.5,
alpha = 1) +
geom_path(aes(x = x_loc[10:11], y = y_loc[10:11]),
color = 'red',
size = 0.45,
alpha = 1) +
geom_path(aes(x = x_loc[11:16], y = y_loc[11:16]),
color = 'black',
size = 1.5,
alpha = 1)
答案 0 :(得分:2)
我想我自己解决了这个问题 - 对于任何从事此工作的人来说,都与分组有关。我将很快用一个解决方案来编辑它!
编辑:
ggplot() +
geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc, y = y_loc, col = my_colors, size = my_colors, group = my_group),
alpha = 1) +
scale_color_manual(values = c("black", "red")) +
scale_size_manual(values = c(1.5, 0.45))
这可以完成工作!需要在分割颜色和尺寸之前将所有内容分组到同一组中