Я хочу, чтобы в векторах символов были как нижние, так и верхние индексы относительно значений X и Y на графике.

Например, значения X - это верхний индекс, а значения Y - это нижний индекс.

Вот пример того, как это должно выглядеть: введите описание изображения здесь

Я пробовал вставлять верхние индексы, а затем строить их, хотя это не сработало так, как ожидалось.

Код для сюжета:

ggplot(test, aes(x=Neutron, y = Protons, group = Isotopes)) + geom_point() +geom_line() +geom_label(label = test$Isotopes) + scale_x_continuous(breaks = test$Neutron) + scale_y_continuous(breaks = test$Protons)
> ggplot(test, aes(x=Neutron, y = Protons)) + geom_point() +geom_line() +geom_label(label = test$Isotopes) + scale_x_continuous(breaks = test$Neutron) + scale_y_continuous(breaks = test$Protons)

Воспроизводимый код:

structure(list(Neutron = c(237, 233, 233, 229, 225, 225, 221, 
217, 213, 213, 209, 209, 205), Protons = c(93, 91, 92, 90, 88, 
89, 87, 85, 83, 84, 82, 83, 81), Isotopes = c("Np", "Pa", "U", 
"Th", "Ra", "Ac", "Fr", "At", "Bi", "Po", "Pb", "Bi", "Tl")), class = "data.frame", row.names = c(NA, 
-13L))
r
2
Lime 22 Мар 2021 в 00:21

1 ответ

Лучший ответ

Мы могли бы использовать sprintf или paste для создания ярлыков, затем указать label в aes и parse в geom_label

library(ggplot2)
lbl1 <- with(test, sprintf('%s[%d]^%d', Isotopes, Protons, Neutron))
ggplot(test, aes(x=Neutron, y = Protons, label = lbl1)) +
        geom_point() +
        geom_line() +
        geom_label(parse= TRUE) +
        scale_x_continuous(breaks = test$Neutron) + 
         scale_y_continuous(breaks = test$Protons)

-вывод

enter image description here

1
akrun 21 Мар 2021 в 21:49