簡體   English   中英

使用ggplot的Barplot

[英]Barplot using ggplot

我有一個數據框

  Model1    Model2      Model3    Model4
      4          4          5         5
      4          4         NA        NA
      3          2          5         5
      2          2          3         3
      3          3          3         3
      3          3          4         4

我想繪制一個像

在此處輸入圖片說明

x軸將具有Model1,Model2,Model3和Model4,並且條形圖是每列中得分的比例,即每個模型有6條(在完整數據中,我的得分是0到5)

無需使用rbind創建數據框或創建矩陣就可以做到這一點? 任何幫助將不勝感激。

不更改數據格式就無法做到這一點,但這並不難。

您可以使用reshape2包的melt選項。

我為您的數據創建了一個數據框:

   df1<-data.frame("Model1"=c(4,4,3,2,3,3),
                   "Model2"=c(4,4,2,2,3,3),
                   "Model3"=c(5,NA,5,3,3,4),
                   "Model4"=c(5,NA,5,3,3,4))

  Model1 Model2 Model3 Model4
1      4      4      5      5
2      4      4     NA     NA
3      3      2      5      5
4      2      2      3      3
5      3      3      3      3
6      3      3      4      4

接下來,您可以使用reshape2包來重塑數據:

library(reshape2)
df2<-melt(df1)

    variable value
1     Model1     4
2     Model1     4
3     Model1     3
4     Model1     2
5     Model1     3
6     Model1     3
7     Model2     4
8     Model2     4
9     Model2     2
10    Model2     2
11    Model2     3
12    Model2     3
13    Model3     5
14    Model3    NA
15    Model3     5
16    Model3     3
17    Model3     3
18    Model3     4
19    Model4     5
20    Model4    NA
21    Model4     5
22    Model4     3
23    Model4     3
24    Model4     4

為方便起見,將列重命名為:

names(df2)<-c("Model","Score")

然后計算比例:

df3 <- as.data.frame(table(df2))
df3$prop<-df4$Freq/4*100

最后,劇情:

ggplot(df3,aes(x=Model,y=prop,fill=as.factor(Score)))+
       geom_bar(stat="identity",position="dodge")+
       xlab("Models")+
       ylab("Prop. of Cases (%)")+
       ggtitle("Sample Data")+
       guides(fill=guide_legend(title="Scores"))+
       scale_fill_manual(values = c("2" = "lightblue", "3" = "mistyrose","4"="lightcyan","5"="lavender"))+
       theme_bw()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM