Математические символы и строки Concat в метках ggplot2 - R, LaTex Решение? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь обозначить ось Y моего графика греческим символом Theta, а P ( z ) запятой, разделяющей их. Кроме того, я пытаюсь пометить мою ось X (z_i), где i - индекс. Я попытался сделать это несколькими различными способами ..

string <- ", P(z)"
thet <- bquote(theta)
ylab.fig2 <- paste(thet, string, sep = "")

и сделал нечто подобное с expression(theta). Я использую ylab.fig2 в качестве входных данных в моем ggplot, ylab (рис.2).

new <- ggplot(data = data.frame(x=0), aes(x=x)) + 
  stat_function(fun=Pz.eq, aes(colour="P(z)")) +
  stat_function(fun=bid1, aes(colour="Bid Curve: House 1")) +
  stat_function(fun=bid2, aes(colour="Bid Curve: House 2")) +
  stat_function(fun=bid3, aes(colour="Bid Curve: House 3")) +
  xlim(0,20) + ylim(0,6) +
  xlab("Q(z_i)") + ylab(ylab.fig2) +
  ggtitle("Figure 2: Property Choice Per Household") +
  theme(panel.grid = element_blank(),
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank(),
        legend.title = element_blank(),
        plot.title = element_text(hjust=0.5)) +
  scale_colour_manual("Groups", 
                      values = c("darkseagreen", "darkkhaki", "darkslategray3", "firebrick")) 

Функции bquote () и expression () работают нормально, если они являются единственными входными данными, но когда я использую Paste для возврата остальной части метки оси, греческий символ не выводится. Я полагаю, что это связано с различным классом () каждого объекта. В качестве альтернативы, если есть способ скомпилировать LaTex в метках, это решило бы мои проблемы по осям x и y.

Так выглядит мой график до сих пор ... enter image description here

В целом, есть три вещи, которые я пытаюсь выполнить sh с помощью x и метки оси Y: 1) Конкретные греческие буквы с текстом. 2) Поместите жирный текст внутри метки (жирным будет только вектор z в P ( z )). 3) Поместите подписи «i» в мой текст.

Хотя вопрос о греческих буквах был задан до того, как я ищу решение с использованием LaTex, где я могу использовать не только математические символы. Использование кода LaTex позволит мне решать вопросы 2 и 3, а не только 1.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Или используя цитату и выражение:

library(ggplot2)
i=2
f <- bquote(expression(theta * ", " * P(bold(z))))
g <- bquote(expression(Q(z[.(i)])))

ggplot(mtcars, aes(x=hp, y=wt)) + geom_point()+
    ylab(eval(f))+
    xlab(eval(g))

0 голосов
/ 10 февраля 2020

Пакет latex2exp, вероятно, самый простой:

library(latex2exp)
string <- ", P(z)"
thet <- "$\\theta$"
ylab.fig2 <- TeX(paste(thet, string, sep = ""))

А затем используйте как ... + ylab(ylab.fig2) для построения графика.

...