Preamble
假设我有一个功能,允许用户创建一个boxviolin图,其中框和小提琴图重叠。
library(ggplot2)
df <- dplyr::filter(mpg, class %in% c("compact", "midsize"))
p1 <- ggplot(df, aes(class, hwy)) + geom_violin() + geom_boxplot()
p1
字符串
x1c 0d1x的数据
我还想允许用户删除小提琴情节,如果他们想和我支持的方式是要求用户设置小提琴情节的宽度为0
。
p2 <- ggplot(df, aes(class, hwy)) + geom_violin(width = 0) + geom_boxplot()
p2
型
的
创建于2023-12-10使用reprex v2.0.2
问题
如果你仔细注意,两个图之间的箱线图胡须已经改变了。我认为这是因为小提琴图通过插值数据增加了数据的范围,这使得离群点不再是离群点。
如何避免这种情况?也就是说,如何允许用户在不影响箱线图须的情况下使小提琴图消失?
注意:我知道我可以只提供一个像plot.type
这样的参数,然后根据它的参数添加小提琴层。但这不是我更喜欢的API,因为其他原因。
2条答案
按热度按时间cld4siwp1#
改变的不是盒形图须。当你设置
width=0
时,小提琴会折叠成一条扁平的线。为了避免这种情况或完全删除它,也设置linewidth=0
:字符串
的数据
z4iuyo4d2#
您可以使用颜色和填充参数作为NA,而不是使任何图不可见。
字符串
的数据