可能是一个简单的ggplot2
问题。
我有一个data.frame
,其值是numeric
,分类(factor
)值和character
值:
library(dplyr)
set.seed(1)
df <- data.frame(log10.p.value=c(-2.5,-2.5,-2.5,-2.39,-2,-1.85,-1.6,-1.3,-1.3,-1),
direction=sample(c("up","down"),10,replace = T),
label=paste0("label",1:10),stringsAsFactors = F) %>% dplyr::arrange(log10.p.value)
df$direction <- factor(df$direction,levels=c("up","down"))
我想使用barplot
将这些数据绘制为geom_bar
,其中条形图是水平的,其长度由df$log10.p.value
确定,其颜色由df$direction
,以及y-axis
tick
标签为df$label
,其中的条由df$log10.p.value
垂直排序。
您可以看到df$log10.p.value
不是唯一的,因此:
ggplot(df,aes(log10.p.value))+geom_bar(aes(fill=direction))+theme_minimal()+coord_flip()+ylab("log10(p-value)")+xlab("")
我如何:
y-axis
tick
标签是df$label
吗?谢谢
答案 0 :(得分:1)
这是一种可能的解决方案。请注意,默认情况下,geom_bar
使用频率/计数确定钢筋长度。因此,您需要为值映射指定stat = "identity"
。
# since all of your values are negative the graph is on the left side
ggplot(df, aes(x = label, y = log10.p.value, fill = direction)) +
geom_bar(stat = "identity") +
theme_minimal() +
coord_flip() +
ylab("log10(p-value)") +
xlab("")