- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做与此图的面板 B 中类似的事情:https://ars.els-cdn.com/content/image/1-s2.0-S0002929721000938-gr3_lrg.jpg ,其中我使用形状作为图例,并使用闭合或开放形状作为第二个图例。
我使用以下示例数据
example_data <- data.frame(x=c(1,3,2,4,5,3,1,2,3,2),
y=c(3,5,7,9,1,3,4,7,8,9),
color=c('col1','col2','col3','col1','col2','col3','col1','col2','col1','col3'),
shape=c('triangle','circle','triangle','circle','triangle','circle','triangle','circle','triangle','circle'),
openclosed=c('open','open','open','open','open','closed','closed','closed','closed','closed'))
我设法用不同的形状绘制一个图,并根据列打开/关闭
example_data$point_shape <- -1
example_data[example_data$shape=='triangle' & example_data$openclosed=='closed',]$point_shape <- 15
example_data[example_data$shape=='triangle' & example_data$openclosed=='open',]$point_shape <- 0
example_data[example_data$shape=='circle' & example_data$openclosed=='closed',]$point_shape <- 16
example_data[example_data$shape=='circle' & example_data$openclosed=='open',]$point_shape <- 1
example_data$point_shape <- as.character(example_data$point_shape)
ggplot(example_data, aes(x, y, colour=color, shape=point_shape))+
geom_point()+
scale_shape_manual(name='', breaks=unique(example_data$point_shape),
values=as.numeric(unique(example_data$point_shape)),
labels=c('Open square','Open circle',
'Closed circle','Closed square'))
然后我尝试了 https://stackoverflow.com/a/44725969/651779得到两个形状图例
ggplot(example_data, aes(x, y, colour=color, shape=point_shape))+
geom_point(show.legend=F)+
geom_point(data = example_data[example_data$shape %in% c('triangle','circle'),],
size=0,alpha=0)+
geom_point(data = example_data[example_data$openclosed %in% c('open','closed'),],
size=0, alpha=0)+
scale_shape_manual(name='', breaks=unique(example_data$point_shape),
values=as.numeric(unique(example_data$point_shape)),
labels=c('Open square','Open circle',
'Closed circle','Closed square'))+
guides(alpha = guide_legend(title = "Shape", order = 1,
override.aes = list(shape = c(15,16),
size = 5, color = "black",alpha=1)),
size = guide_legend(title = "Open or closed", order = 2,
override.aes = list(shape = c(16,1),
size = 5, color = "black", alpha=1)))
但这并没有添加两个单独的图例。
如何将图例更改为具有 1 个方形/圆形图例和另一个开放/闭合形状的图例?
最佳答案
为此,我个人喜欢 ggnewscale 包。不确定您想要如何安排图例 - 我使用不同的形状而不是更改填充。
library(tidyverse)
library(ggnewscale)
example_data <- data.frame(x=c(1,3,2,4,5,3,1,2,3,2),
y=c(3,5,7,9,1,3,4,7,8,9),
color=c('col1','col2','col3','col1','col2','col3','col1','col2','col1','col3'),
shape=c('triangle','circle','triangle','circle','triangle','circle','triangle','circle','triangle','circle'),
openclosed=c('open','open','open','open','open','closed','closed','closed','closed','closed'))
ggplot(mapping = aes(x, y))+
geom_point(data = filter(example_data, shape == "circle"),
aes(shape = openclosed)) +
# it's important to give a different name to this scale than to the second scale
# This can also be NULL
scale_shape_manual("Circle", values = c(open = 1, closed = 16)) +
new_scale("shape") +
geom_point(data = filter(example_data, shape == "triangle"),
aes(shape = openclosed)) +
scale_shape_manual("Triangle", values = c(open = 2, closed = 17))
由 reprex package 创建于 2021-04-11 (v1.0.0)
关于r - 如何在 ggplot 中为一种美学创建多个图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67044054/
我无法将存储在变量中的 POSIXct 作为 geom_rect 的 xmin/xmax 传递。我试图构建一个独立的示例,而不会轻视我正在尝试做的事情...... 这个想法是采用一个 ggplot2
我想动态修改/创建美感,而无需重新创建geom层。以下是我的代码。 library("ggplot2") dat 3)) 这里我必须修改geom_point以添加美感。这个想法是始终绘制点并动态修改颜
我想更改一组 ggplot 的点和线的默认颜色。 当然,我可以定义一种颜色,然后在每个绘图中显式调用它: my_colour <- "firebrick" ggplot(cars, aes(speed
假设我有两个 ggplot 美学: a.1 c(a.1,a.2) $v.1 [1] 1 $v.2 [1] 2 $v.3 [1] 3 aes对象是“未计算的表达式”和 c()函数按预期工作,具体取决于
我想使用具有 2 美学的包 ggpubr 的 ggline。等效项在 geom_line 中完美运行,但在 ggline 中无效。假设我有这个数据集 data % mutate(a = x^2,
我有以下数据集 map(.x = list(small = 3, medium = 10, large = 100) , .f = ~ sample(rnorm(1000), .x, r
Scatterplot<-ggplot( diamonds[sample(nrow(diamonds), 1000), ], aes(carat, price, colour=cl
我是一名优秀的程序员,十分优秀!