簡體   English   中英

ggplot:重新排序多面(棒棒糖)圖

[英]ggplot: reorder faceted (lollipop) graph

我正在嘗試制作一個多面的棒棒糖圖,該圖顯示四個特定組(grp)特定日志(x)發生的頻率。

我可以生成多面圖,但是我想按日志發生的次數(val)對每個方面(即grp)進行排序。

我嘗試調整因子水平和標簽,但無法對圖表重新排序,以使每個grp的值都按val的降序排列。

ggplot(total) +
  geom_segment( aes(x=x, xend=x, y=0, yend=val), color="grey") +
  geom_point( aes(x=x, y=val, color=grp), size=3 ) +
  coord_flip()+
  facet_wrap(~grp, ncol=1, scale="free_y")

這是我的數據幀的dput輸出

structure(list(x = c("LANCET", "QUARTERLY JOURNAL OF ECONOMICS", 
"WORLD DEVELOPMENT", "JOURNAL OF DEVELOPMENT ECONOMICS", "WORLD BANK ECONOMIC REVIEW", 
"WORLD BANK RESEARCH OBSERVER", "JOURNAL OF DEVELOPMENT ECONOMICS", 
"PLOS ONE", "WORLD BANK ECONOMIC REVIEW", "WORLD DEVELOPMENT", 
"LANCET", "AMERICAN ECONOMIC REVIEW", "AGRICULTURAL ECONOMICS", 
"AIDS", "CLIMATIC CHANGE", "ECONOMICS LETTERS", "HEALTH POLICY", 
"HUMAN RESOURCES FOR HEALTH", "JOURNAL OF DEVELOPMENT STUDIES", 
"JOURNAL OF AFRICAN ECONOMIES", "APPLIED ECONOMICS LETTERS", 
"REVIEW OF FAITH & INTERNATIONAL AFFAIRS", "JOURNAL OF INTERNATIONAL DEVELOPMENT", 
"WORLD DEVELOPMENT"), val = c(19L, 15L, 13L, 11L, 8L, 6L, 6L, 
6L, 5L, 5L, 4L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 9L, 7L, 6L, 6L, 5L, 
5L), grp = c("4", "4", "4", "4", "4", "4", "3", "3", "3", "3", 
"3", "3", "2", "2", "2", "2", "2", "2", "1", "1", "1", "1", "1", 
"1")), row.names = c(NA, -24L), class = "data.frame")

ggplot2中沒有內置方法可以執行您想要的操作。 但是有一種解決方法,您可以轉換數據框並創建用於排序的新列。

library(dplyr)
library(ggplot)
# ascending by val
plot_data <- total %>%
    arrange(grp,val) %>% # sort data based on group and value
    mutate(rank = row_number()) # this will be used as x axis

# descending by val
plot_data <- total %>%
    arrange(grp,val) %>%
    mutate(rank = nrow(total) - row_number() + 1)

plot_data %>%
    ggplot() +
    geom_segment( aes(x=rank, xend=rank, y=0, yend=val), color="grey") +
    geom_point( aes(x=rank, y=val, color=grp), size=3 ) +
    coord_flip()+
    facet_wrap(~grp, ncol=1, scale="free_y") +
    scale_x_continuous(
        breaks = plot_data$rank, # specify tick breaks using rank column
        labels = plot_data$x # specify tick labels using x column
    )

上升

在此處輸入圖片說明

降序

在此處輸入圖片說明

您還可以閱讀此博客文章,以獲得更深入的解釋:

https://drsimonj.svbtle.com/ordering-categories-within-ggplot2-facets

暫無
暫無

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

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