不使用表达式的条形码标签下标

时间:2018-11-19 16:34:17

标签: r ggplot2

我已经看到了几个有关在条形图上创建下标的主题,但是我似乎无法在我的代码中使用“表达式”功能。理想情况下,我已在下面附加了代码,我想要$ K_a $,$ N_ {max} $,$ C_ {r50} $,$ C_ {s50} $,但我不知道如何使它出现在条形图中。我很有可能编写了效率最低的条形图,因此任何建议将不胜感激!

library(ggplot2)

lowdose <- c(3.412681e-03, 1.700527e-03, 1.207575e-04, 8.716199e-03, 8.186021e-05, 1.286261e-03, 5.872725e-04, 7.124678e-02, 2.107681e-01, 3.543541e-01) 

lowdoseparams <-c("V", "k", "ka", "\u03B1", "\u03B3", "\u03B7", "\u03C3", "Nmax", "Cs50", "Cr50")
#lowdoseparams <-expression(V, k, k_a, alpha, gamma, eta, sigma, Nmax, Cs50, Cr50)

lowdata <- data.frame(Parameters=lowdoseparams, Effects=lowdose)
p_low<-ggplot(data=lowdata, aes(x=Parameters, y=Effects)) +
  geom_bar(stat="identity")+theme(axis.text=element_text(size=14),
                                  axis.title=element_text(size=18))
p_low

2 个答案:

答案 0 :(得分:3)

将此问题作为参考:Subscript letters in ggplot axis label

以下是使用表达式函数创建x轴标签的解决方案:

library(ggplot2)

lowdose <- c(3.412681e-03, 1.700527e-03, 1.207575e-04, 8.716199e-03, 8.186021e-05, 1.286261e-03, 5.872725e-04, 7.124678e-02, 2.107681e-01, 3.543541e-01) 
lowdoseparams <-c("V", "k", "k[a]", "\u03B1", "\u03B3", "\u03B7", "\u03C3", "N[max]", "Cs50", "Cr50")

#define the lowdoseparams as factors in the same order as the labels
lowdoseparams<-factor(lowdoseparams, levels =lowdoseparams)
#create the labels
xlabels<-expression(V, k, k['a'], alpha, gamma, eta, sigma, N[max], Cs[50], Cr[50])

lowdata <- data.frame(Parameters=lowdoseparams, Effects=lowdose)
p_low<-ggplot(data=lowdata, aes(x=Parameters, y=Effects)) +
  geom_bar(stat="identity")+
  theme(axis.text=element_text(size=14),axis.title=element_text(size=18)) +
  scale_x_discrete(labels= xlabels)
p_low

看起来像“表达式”类型的xlabels向量不能添加到数据帧,而必须保留为独立向量。

enter image description here

答案 1 :(得分:1)

我想您可以使用this unicode subscript lookup table。例如\U2090代表 a

library(ggplot2)

lowdose <- c(3.412681e-03, 1.700527e-03, 1.207575e-04, 8.716199e-03, 8.186021e-05, 1.286261e-03, 5.872725e-04, 7.124678e-02, 2.107681e-01, 3.543541e-01)
lowdoseparams <- c("V", "k", "k\U2090", "\u03B1", "\u03B3", "\u03B7", "\u03C3", "Nmax", "Cs50", "Cr50")
lowdata <- data.frame(Parameters = lowdoseparams, Effects = lowdose)

p_low <- ggplot(data = lowdata, aes(x = Parameters, y = Effects)) +
  geom_col() + 
  theme(
    axis.text  = element_text(size = 14),
    axis.title = element_text(size = 18)
  )
p_low

reprex package(v0.2.1.9000)于2018-11-19创建