已更新示例数据:
mydata <- read.table(header=TRUE, text="
Item Value Site
A 96 site1
B 1 site1
C 2 site1
A 1 site2
B 62 site2
A 19 site3
B 1 site3
C 11 site3
D 9 site3
")
我要做的是绘制堆积的条形图,并对每个站点对项目变量进行不同的排序,并按值列对其进行排序。因此,对于每个站点,具有最大百分比值的项目位于堆叠栏的底部,然后是第二个最大百分比值,依此类推。但是,我尝试了不同的方法,并且很难使用value列按堆积的条形进行排列。
使用解决方案进行编辑: 按照上面标记为答案的链接,使用geom_bar分别绘制每个条形,并添加重新排序功能-aes(fill = reorder(Item,+ Value))
答案 0 :(得分:1)
为此,我通常依靠# ["<td class='test'><a class='test' href=...", # 0
# "<td class='test'>A</td>", # 1
# "<td class='test'><a class='test' href=...", # 2
# "<td class='test'>B</td>", # 3
# "<td class='test'><a class='test' href=...", # 4
# "<td class='test'>None</td>", # 5 Insert "<td class='test'>None</td>"
# "<td class='test'><a class='test' href=...", # 6
# "<td class='test'>C</td>", # 7
# "<td class='test'><a class='test' href=...", # 8
# "<td class='test'>F</td>", # 9
# "<td class='test'><a class='test' href=...", # 10
# "<td class='test'>None</td>", # 11 Insert <td class='test'>None</td>"
# "<td class='test'><a class='test' href=...", # 12
# "<td class='test'>X</td>"] # 13
软件包,尤其是forcats
:
fct_reorder
其中给出以下内容:
答案 1 :(得分:1)
这将为您服务
ggplot(data=my_data, aes(x=site, y=percentage, fill=reorder(substrate, percentage))) +
geom_bar(stat="identity", position="stack")
通过在fill参数中使用reorder
命令。
答案 2 :(得分:0)
我认为forcats
是一个很棒的方法,但是在我们拥有它之前-或当您只想使用不带库的base R时,this更像是传统方法:
mydata$substrate <- factor(mydata$substrate, levels = unique(mydata$substrate[order(mydata$percentage)]))
ggplot(data=mydata, aes(x=site, y=percentage), fill= Substrate) +
geom_bar(stat="identity",aes(fill=substrate))