R/ggplot中的堆叠条形图:确保标题和标题上所有元素的顺序

R/ggplot中的堆叠条形图:确保标题和标题上所有元素的顺序,r,ggplot2,R,Ggplot2,这在某种程度上与我的想法有关,但由于问题的不同,我决定写一篇不同的文章 我需要从数据集中创建两个不同版本的绘图:一个包含特定列的所有值,另一个包含过滤值。考虑到我的数据框架,我想更容易看出: consts = paste('"Category","Year","Name","Quantity"\n', 'SHEEP,2003,Alice,10\n', 'SHEEP,2005,Alice,3\n', 'SH

这在某种程度上与我的想法有关,但由于问题的不同,我决定写一篇不同的文章

我需要从数据集中创建两个不同版本的绘图:一个包含特定列的所有值,另一个包含过滤值。考虑到我的数据框架,我想更容易看出:

consts = paste('"Category","Year","Name","Quantity"\n', 
               'SHEEP,2003,Alice,10\n',
               'SHEEP,2005,Alice,3\n',
               'SHEEP,2008,Alice,2\n',
               'SHEEP,2009,Alice,1\n',
               'SHEEP,2012,Alice,3\n',
               'CACTUS,1997,Bob,45\n',
               'CHICKEN,1997,Bob,6\n',
               'SHEEP,1998,Bob,2\n',
               'SHEEP,2005,Bob,5\n',sep = "")
data <- read.csv(text=consts,header = TRUE)
给出以下曲线图:

不完全是我想要的:注意第一类被标记为“绵羊”

当我使用以下调用过滤和绘制数据时,我无法获得所需的结果:

doPlot(data,"Alice")
图为: 图例/颜色是正确的:爱丽丝剪过的所有羊毛都是绵羊

我想要的是:

  • 确保每个情节都有相同的标题,按照我想要的顺序 它们以正确的颜色出现(绵羊、仙人掌、鸡) 标题和栏

  • 确保标题将与所有条目一起显示,即使它们 在正在绘制的数据中不存在。例如,在第二个图中 我将有与第一个相同的图例(读者会注意到) 那只仙人掌/鸡是数据的一部分,但爱丽丝没有删掉 任何)

  • 提前谢谢

    编辑:我可以通过强制执行以下因素的顺序来解决第1项:

    data$Category <- factor(data$Category, levels = c("SHEEP", "CACTUS", "CHICKEN"))
    

    data$CategoryGrr,找到了答案。只需将DROP=FALSE添加到行中

    scale_fill_discrete("Category",labels=c("Sheep","Cactus","Chicken"),drop=FALSE,c=45, l=80)
    
    结果如下。回答我自己,希望其他人能从中受益

    它似乎也回答了这个问题。是的——我已经检查了另一个答案,没有注意到在这种情况下也可以使用DROP=FALSE。谢谢
    doPlot(data,"Alice")
    
    data$Category <- factor(data$Category, levels = c("SHEEP", "CACTUS", "CHICKEN"))
    
    scale_fill_discrete("Category",labels=c("Sheep","Cactus","Chicken"),drop=FALSE,c=45, l=80)