我有以下数据集:
Database<-c("Composite","DB","TC","RH","DGI","DCH","DCH","DCH","LDP")
Unique_Drugs<-c(12672,5130,1425,3090,6100,2019,250,736,1182)
Unique_Targets<-c(3987,2175,842,2308,2413,1441,198,327,702)
db<-data.frame(Database,Unique_Drugs,Unique_Targets)
区别在于,在x轴上,我想要7个唯一的Database
名称,而fill
参数应该是Unique_Drugs
和Unique_Targets
,以便创建2个彩色条将显示其值。我不确定如何使其工作。
我的代码是:
p <- ggplot(data = db, aes(Database)) +
geom_bar(position = position_dodge(preserve = "single"), stat="count", aes(fill = colnames(db[2:4])), color = "black")+
coord_flip()+
theme(legend.position="top",
legend.title=element_blank(),
axis.title.x=element_text(size=18, face="bold", color="#000000"), # this changes the x axis title
axis.text.x = element_text(size=14, face="bold", color="#000000"), #This changes the x axis ticks text
axis.title.y=element_text(size=18, face="bold", color="#000000"), # this changes the y axis title
axis.text.y = element_text(size=14, face="bold", color="#000000"))+ #This changes the y axis ticks text
labs(x = "Database") +
labs(y = "Value") +
scale_x_discrete(limits = rev(factor(Database))) +
scale_fill_manual("Databases", values = c("tomato","steelblue3"))
答案 0 :(得分:1)
这是实现所需目标的一种方法:
library(reshape2)
ggplot(melt(db), aes(x = Database, y = value, fill = variable)) +
geom_col(position = "dodge") + ylab(NULL) + theme_minimal() +
scale_fill_discrete(NULL, labels = c("Drugs", "Targets"))
如果您只想使用毒品的柱状图,则不需要melt
,因为您可以使用y = Unique_Drugs
来指定柱高(请注意,因为我们有高度,所以我们使用{{1 }}。但是,在这种情况下,我们要指定两种高度。您的 fill自变量应为geom_col
和Unique_Drugs
的字眼恰恰表明我们需要进行一些转换,因为Unique_Targets
出于相同的美感不接受两个变量。因此,使用ggplot
我们将所有高度作为一个变量,并为melt
得到一个变量。