Подстроки и надстроки "-" или "+" с метками оси ggplot2? (ионная химическая нотация)

Я получил этот сюжет, используя код ниже

enter image description here

На моем графике я хочу, чтобы у NO3 был отрицательный знак "-" в виде верхнего индекса, как показано ниже

enter image description here

В метке оси x я не мог использовать отрицательный знак только как верхний индекс для NO3, поэтому мне пришлось использовать -1, как показано ниже

x <- seq(0,2*pi,0.1)
y <- sin(x)

df <- data.frame(x, y)
ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{-1}-N~Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) 

Есть ли какие-либо предложения о том, как изменить метку, чтобы иметь только отрицательный знак без 1?

Ответ 1

Попробуйте заключить в кавычки знак минус после оператора верхнего индекса:

ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{"-"}-N~Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +
theme(legend.title = element_text(size=12, face="bold"),
      legend.text=element_text(size=12),
      axis.text=element_text(size=12),
      axis.title = element_text(color="black", face="bold", size=18))

Я думаю, что с научной точки зрения более точно использовать оператор %.% между блоками:

+ labs(x=expression(Production~rate~" "~mu~moles~NO[3]^{textstyle("-")}-N %.% Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +

textstyle должен не допускать уменьшения размера надстрочного текста. Я также не уверен, почему у вас есть " " между двумя тильдами. Вы можете связать целую кучу тильд, чтобы увеличить "пробелы":

ggplot(df, aes(x=x, y=y))+
geom_point(size=4)+
labs(x=expression(Production~rate~~~~~~~~~~~~mu~moles~NO[3]^{textstyle("-")}-N %.% Kg^{-1}),
     y=expression(Concentration~mg~L^{-1})) +
theme(legend.title = element_text(size=12, face="bold"),
      legend.text=element_text(size=12),
      axis.text=element_text(size=12),
      axis.title = element_text(color="black", face="bold", size=18))

enter image description here

И бонусный совет по заговору: цитирование чисел - это способ обойти документально подтвержденную сложность в создании курсивных цифр с помощью заговора. (Использование italic(123) не удается, но italic("123") делает.)