如何在R中制作比较排名的图表?

4

我希望在R中制作与图片上相似的图表。我用了下面的代码,但效果不一样,我希望它能像图片上一样对称。

我的数据框长这样:

Group    Ranking1    Ranking2     Pop
  a           1            1      12345
  b           2            4      127868
  c           3            2      123477
  d           4            3      9485
  e           5            7      132588
  f           6            5      38741
  g           7            9      8372
  h           8            11     53423
  i           9            6      238419
  j           10           16     31314

我使用的代码是:

ggparcoord(data,
columns = 2:3, groupColumn = 1, 
scale="globalminmax",
showPoints = TRUE, 
title = "Ranking",
alphaLines = 0.3
) + scale_color_viridis(discrete=TRUE) + theme_ipsum()+ theme_void()

但我无法使它看起来像这个:

输入图像描述

1个回答

0

如果我正确理解了您所说的“对称”,那么如果两列中的Ranking不匹配,您将无法重现这样的图形。在Ranking1中,您有c(1:10),而在Ranking2中,您有c(1:7, 9, 11, 16)

这里是一个最小化的示例,以更接近您的目标:

数据

# Data with corrected rankings (1:10)
data <- read.table(text="
Group    Ranking1    Ranking2     Pop
  a           1            1      12345
  b           2            4      127868
  c           3            2      123477
  d           4            3      9485
  e           5            7      132588
  f           6            5      38741
  g           7            9      8372
  h           8            8     53423
  i           9            6      238419
  j           10           10     31314
           
           ", header = TRUE)

代码

# Build plot
GGally::ggparcoord(data,
                   columns = 2:3, groupColumn = 1,  
                   scale="globalminmax", 
                   showPoints = TRUE, 
                   title = "Ranking"
) + 
    # Reversed y axis with custom breaks to recreate 1:10 rankings
    scale_y_reverse(breaks = 1:10)

enter image description here

编辑:美化它

如果你想要添加一些华丽的效果(就像你试图做的那样),你可以按照以下步骤操作(不需要使用theme_void()):

GGally::ggparcoord(data,
                   columns = 2:3, groupColumn = 1,  
                   scale="globalminmax", 
                   showPoints = TRUE, 
                   title = "Ranking"
) + 
    # Reverses scale, adds pretty breaks
    scale_y_reverse(breaks = 1:10) + 
    # Prettifies typography etc.
    hrbrthemes::theme_ipsum() + 
    # Removes gridlines
    theme(
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()
    ) + 
    # Removes axis labels
    labs(
        y = element_blank(), 
        x = element_blank()
    )

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接