Jel*_*llz 6 r legend subscript ggplot2
为了使我的图形适合黑白打印,我将一个变量与“形状”、“lty”、“颜色”映射在一起。
ggplot(df, aes(x=time, y=mean,
shape=quality,
lty=quality,
color=quality))
Run Code Online (Sandbox Code Playgroud)
我得到的数字是这样的
我想将图例的一部分作为订阅者,代码如下:
labels=c(expression(Pol[(Art)]), expression(Pol['(Aca-)']), expression(Pol['(Aca-)']))
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我将“标签”放在颜色或形状中时,它使图例变得非常复杂,例如,
是否可以将“shape”,“color”,“lty”映射到一个变量,并设置下标,但将它们保留在一组图例中?
要更改分类尺度的标签,您可以使用scale_*_discrete(labels = ...)。在这里您只需对color、shape、 和执行此操作linetype。
您应该避免使用lty =一般;该同义词是为了与基本 R 兼容而允许的,但它并未在整个ggplot2.
我更改了您的标签,使其更接近我认为您的意思(第三个条目现在是“Aca+”,而不是重复的“Aca-”),并使它们更好地左对齐(通过向第一个创建适当的间距)。
lab1 <- c(expression(Pol[(Art)*phantom("+")]),
expression(Pol['(Aca-)']),
expression(Pol['(Aca+)']))
library(ggplot2)
ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
scale_color_discrete(labels = lab1) +
scale_shape_discrete(labels = lab1) +
scale_linetype_discrete(labels = lab1)
Run Code Online (Sandbox Code Playgroud)
如果您发现自己需要重复这样的函数的精确副本,有两种解决方法:
重新标记数据本身 -或-
用于purrr::invoke_map迭代函数
library(purrr)
ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
invoke_map(list(scale_color_discrete,
scale_linetype_discrete,
scale_shape_discrete),
labels = lab1)
Run Code Online (Sandbox Code Playgroud)
这种方法大部分都很好,但现在expression(...)语法有一个更好的替代方案,即优秀的基于 markdown 的{ggtext}包: https: //github.com/wilkelab/ggtext
要更改为此方法,请使用(可选的,命名的)标签向量,如下所示:
lab1 <- c(expression(Pol[(Art)*phantom("+")]),
expression(Pol['(Aca-)']),
expression(Pol['(Aca+)']))
library(ggplot2)
ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
scale_color_discrete(labels = lab1) +
scale_shape_discrete(labels = lab1) +
scale_linetype_discrete(labels = lab1)
Run Code Online (Sandbox Code Playgroud)
然后将此行添加到您的主题中:
library(purrr)
ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
invoke_map(list(scale_color_discrete,
scale_linetype_discrete,
scale_shape_discrete),
labels = lab1)
Run Code Online (Sandbox Code Playgroud)
相对于其他方法的优点是:
您可以使用该新列作为美学映射 [ ggplot(..., aes(color = my_new_column, linetype = my_new_column, ...)],而不必使用该purrr::invoke方法在每个层中传递额外的标签。
| 归档时间: |
|
| 查看次数: |
3235 次 |
| 最近记录: |