当使用ggplot时,我可以设置shape为21-25来获取具有internal(fill)和border(col)颜色的独立设置的形状,如下所示:
df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何控制形状边框的厚度,无论是绝对设置还是美学映射.我注意到,如果我设置一个lwd值,它会覆盖size美学:
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
Run Code Online (Sandbox Code Playgroud)

如何控制边框厚度?
我正在尝试将剪贴蒙版应用于ggplot中的geom以遮盖部分数据,但保持轴,网格,其他geom和图例可见.我不想创建一个特定的情节,因此我不是在寻找一个处理阴影的某些部分的多边形.
这是我想要模仿的设计(面具,不一定是主题,我现在该怎么做):
(来源)
另请参见此示例
有人可能会争辩说我可以过滤未定义掩码的多边形中包含的数据.但是,虽然它适用于点,并且可以用于多边形/线状对象,但它适用于栅格(边框不会完全遵循非垂直或非水平线).所以我尝试了以下方法:
library(ggplot2)
library(gridSVG)
library(grImport)
# Create a plot
p <- ggplot(diamonds[1:300,], aes(carat, price)) + geom_point(aes(colour = cut))
# And a clipping mask
pg <- polygonGrob(c(.7, 0, 0, 1, 1),
c(0, .7, 1, 1, 0))
cp <- clipPath(pg)
Run Code Online (Sandbox Code Playgroud)
我能够使用包gridSVG定义剪贴蒙版,但我必须将它ggplot对象上的困难,甚至提取GROB后(见资源在这里)有ggplotGrob().我无法将剪贴蒙版应用于grob:
g <- ggplotGrob(p) # store the plot as a grob
registerClipPath("mask", cp)
g_clipped <- clipPath(g)
gridsvg(name = "test_c2.svg")
grid.draw(clipPathGrob(g_clipped, cp)$grob)
dev.off()
Run Code Online (Sandbox Code Playgroud)
我的直觉是g_clipped应该绘制,但我不能grid.draw(),因为它是一个clipPath对象.grid.draw() …
在ggplot2中有一种方法可以获得情节类型"b"吗?见例子:
x <- c(1:5)
y <- x
plot(x,y,type="b")
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想用它们的值替换点,以获得类似于这个着名示例的东西:

编辑:这里有一些样本数据(我想在情节类型为"b"的方面绘制每个"猫"):
df <- data.frame(x=rep(1:5,9),y=c(0.02,0.04,0.07,0.09,0.11,0.13,0.16,0.18,0.2,0.22,0.24,0.27,0.29,0.31,0.33,0.36,0.38,0.4,0.42,0.44,0.47,0.49,0.51,0.53,0.56,0.58,0.6,0.62,0.64,0.67,0.69,0.71,0.73,0.76,0.78,0.8,0.82,0.84,0.87,0.89,0.91,0.93,0.96,0.98,1),cat=rep(paste("a",1:9,sep=""),each=5))
Run Code Online (Sandbox Code Playgroud)
此致,穆萨
I'm trying to build a network plot in ggplot. Two things: 1) I need to put the nodes at specific (x, y) values. This isn't a problem. 2) The network plot is directed but I need to be able to show differences in going from, say, Node B to Node A than from Node A to Node B.
It's that latter bit I'm having trouble with. Basically I need to offset two lines running parallel between nodes. Ultimately the lines' …
这是一个与自定义 geom 相关的问题,从这个答案修改。给定的 geom 分组失败,所以我包含coord_munch在 中draw_panel,受到GeomLine和 的启发GeomPath。它实际上在许多情况下都有效,但我觉得它同样经常失败。
特别是,它似乎以两人为一组失败(参见下面的示例),并且在使用拼凑而成的某些情节时奇怪地失败。我打开了一个问题,但还没有得到答复,我对此并不感到惊讶,我同意并觉得这实际上是一个写得不好的geom问题,而不是一个拼凑的问题。
我相信## Work out grouping variables for grobs用于 GeomPath的分组(在代码中,用
我的主要问题是,我如何检查这个对象?
如果有人看到并理解我的 geom 的问题,我会更加感激。干杯
例子:
library(tidyverse)
## this is not an arrange problem, as shown by the correct plot using geom_path
testdf <- testdf %>% arrange(id, group, x)
Run Code Online (Sandbox Code Playgroud)
与 geom_path 一起使用
ggplot(testdf, aes(x, y)) +
geom_path(aes(group = id))
Run Code Online (Sandbox Code Playgroud)

geom_trail 失败
ggplot(testdf, aes(x, y)) +
geom_path(aes(group = id))
Run Code Online (Sandbox Code Playgroud)

使用颜色时更糟糕
ggplot(testdf, aes(x, …Run Code Online (Sandbox Code Playgroud)