SCD*_*DCE 4 expression r ggplot2
我正在尝试将一些标签部分斜体化,但仍然具有sum()功能,但我不知道该怎么做:
library(ggplot2)
library(reshape2)
iris_mean <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=mean)
iris_sd <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=sd)
df_mean <- melt(iris_mean, id.vars=c("Species"), variable.name = "Samples", value.name="Values")
df_sd <- melt(iris_sd, id.vars=c("Species"), variable.name = "Samples", value.name="Values")
limits <- aes(ymax = df_mean[,"Values"] + df_sd[,"Values"], ymin=df_mean[,"Values"] - df_sd[,"Values"])
df_mean$Species <- factor(df_mean$Species, levels=unique(df_mean$Species), ordered=TRUE)
ggplot(df_mean, aes(Samples, Values, fill = Species)) +
geom_bar(position="dodge", stat="identity") + coord_flip() +
theme(axis.text.y=element_text(angle=0, hjust=1)) +
theme_minimal() +
theme(
legend.position = "bottom",
plot.margin = unit(c(1,1,.5,0),"cm"),
legend.key.size = unit(.5, "lines"),
axis.text.y = element_text(face = "italic")
) +
scale_x_discrete("",
labels= expression(
paste(italic("I. setosa"), " (n=", sum(iris == "setosa"), ")"),
paste(italic("I. versicolor"), " (n=", sum(iris == "versicolor"), ")"),
paste(italic("I. virginica"), " (n=", sum(iris == "virginica"), ")")))
Run Code Online (Sandbox Code Playgroud)
当前情节:
想要的情节:
只需查看scale_x_discrete,您就可以做到
scale_x_discrete("",
labels= c(
bquote(italic("I. setosa")*" (n="*.(sum(iris == "setosa")) * ")"),
bquote(italic("I. versicolor")*" (n="*.(sum(iris == "versicolor")) * ")"),
bquote(italic("I. virginica")*" (n="*.(sum(iris == "virginica")) * ")")))
Run Code Online (Sandbox Code Playgroud)
这里我们用来bquote()将值“插入”到表达式中。我们使用调用.()中的函数来执行此操作bquote(),该函数计算当前环境中的表达式并将值插入到表达式中。
您可以使用以下命令自动创建这些内容
x <- c("setosa", "versicolor", "virginica")
xlabels <- lapply(x, function(spec) {
bquote(italic(.(paste("I.", spec)))*" (n="*.(sum(iris == spec)) * ")")
})
Run Code Online (Sandbox Code Playgroud)
然后使用
+ scale_x_discrete("", labels= xlabels)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |