#r #ggplot2
#r #ggplot2
Вопрос:
Мой код работал раньше, но условные обозначения формы и цвета теперь разделены.
## loading packages
library(tibble)
library(ggplot)
## an example of data
my_data <- tibble(x = seq(1:10),
y = rnorm(10, mean = 0, sd = 1),
z = rep(c("{ }^{2}*H", "{ }^{18}*O"), 5))
Пример набора данных может быть таким:
my_data
# A tibble: 10 x 3
x y z
<int> <dbl> <chr>
1 1 0.631 { }^{2}*H
2 2 1.43 { }^{18}*O
3 3 -0.548 { }^{2}*H
4 4 -1.42 { }^{18}*O
5 5 1.72 { }^{2}*H
6 6 -0.816 { }^{18}*O
7 7 0.0297 { }^{2}*H
8 8 -0.471 { }^{18}*O
9 9 -0.565 { }^{2}*H
10 10 0.448 { }^{18}*O
Когда я хотел нарисовать простой точечный график, используя следующий код:
my_colors <- c("#00BFC4", "#F8766D")
ggplot(data = my_data,
mapping = aes(x = x, y = y, color = z, shape = z))
geom_point()
geom_line()
scale_color_manual(name = "",
labels = parse_format(),
values = my_colors)
scale_shape_manual(name = "",
labels = parse_format(),
values = c(16:17))
Условные обозначения разделяются, как показано на следующем рисунке:
Но это было сделано более гладко, как показано на следующем рисунке:
Комментарии:
1. Если название и метки совпадают, то должна быть нарисована только одна легенда. В данном случае этого не происходит, поэтому я думаю, что недавно была добавлена ошибка, связанная с использованием
parse_format()
илиlabel_parse()
вscale_*_manual()
заявлениях2. Вероятно, потому, что у меня это работало раньше.
Ответ №1:
Вот мое последнее обновление. Вы можете использовать as.expression
и bquote
ggplot(data = my_data, mapping = aes(x = x, y = y, color = z, shape = z, group = z))
geom_point()
geom_line()
scale_color_discrete(name = "", labels = c(as.expression(bquote({ }^{2}*"H")), as.expression(bquote({ }^{18}*"O"))))
scale_shape_discrete(name = "", labels = c(as.expression(bquote({ }^{2}*"H")), as.expression(bquote({ }^{18}*"O"))))
Комментарии:
1. когда я использую что-то похожее на ваш код, следующим образом:
ggplot(data = my_data, mapping = aes(x = x, y = y, color = z, shape = z)) geom_point() geom_line() scale_color_discrete(name = "", labels = c(expression({ }^{2}*"H"), expression({ }^{18}*"O"))) scale_shape_discrete(name = "", labels = c(expression({ }^{2}*"H"), expression({ }^{18}*"O")))
Это все еще не работает. Я думаю, это может быть связано с выражениями.