【问题标题】:Better Organization Of Data on Graph更好地组织图表上的数据
【发布时间】:2021-07-21 03:54:49
【问题描述】:

我的数据被组织成

Country   Year Region1 Region2...
Mexico    2007 10000   20000
Mexico    2008 1000.   1000
Guatemala 2007 500     2000
Guatemala 2008 1000    200
x <- read_csv("Downloads/BorderYearData.csv", skip = 1)
x[is.na(x)] = 0
x$CITIZENSHIP <- str_to_title(x$CITIZENSHIP) #Fixes Country Name from CAPS to Title Format
x$Region <- countrycode(sourcevar = x$CITIZENSHIP, origin = "country.name", destination = "region") #Applies a region to each country
Latin_America <- x %>% filter(Region == "Latin America & Caribbean")
South_West <- Latin_America #Only includes Latin American countries from 2007-2019
ggplot(South_West, aes(x = Year, y = YUM, col = CITIZENSHIP)) + geom_line() + geom_point() + scale_y_log10()  + ggtitle("Yuma Apprehensions By Country") + xlab("Year") + ylab("Apprehensions") #Plots the Years vs. Yuma Region filtered by Latin American countries

Year Vs. Yuma Region filtered by Latin American Countries 我面临的主要问题是我创建的图表有太多标签,因为它需要显示大约 42 个国家,并且使图表看起来非常小。我想知道是否有办法让图表看起来更大或更好地显示数据?

【问题讨论】:

    标签: r ggplot2 country-codes


    【解决方案1】:

    根据你的价值观在情节上“重叠”的程度,也许你可以用国家名称而不是图例来标记线条,例如

    最小可重现示例(“假”数据集):

    South_West <- structure(list(CITIZENSHIP = structure(c(1L, 2L, 3L, 4L, 5L, 
    6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 
    6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 
    6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 
    6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("Argentina", 
    "Brazil", "Guatemala", "Uruguay", "Haiti", "Jamaica", "Barbados", 
    "Ecuador", "Honduras", "Trinidad"), class = "factor"), Year = c(2005L, 
    2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 
    2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 
    2006L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 
    2007L, 2007L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 
    2008L, 2008L, 2008L, 2009L, 2009L, 2009L, 2009L, 2009L, 2009L, 
    2009L, 2009L, 2009L, 2009L, 2010L, 2010L, 2010L, 2010L, 2010L, 
    2010L, 2010L, 2010L, 2010L, 2010L, 2011L, 2011L, 2011L, 2011L, 
    2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2012L, 2012L, 2012L, 
    2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2013L, 2013L, 
    2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2014L, 
    2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
    2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 2015L, 
    2015L), Region = c("Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean", 
    "Latin America & Caribbean", "Latin America & Caribbean", "Latin America & Caribbean"
    ), YUM = c(1.78122037672438, 2.37322455388494, 2.13142191176303, 
    1.27564440481365, 3.42383766197599, 2.15245464001782, 1.88633515499532, 
    1.9733019429259, 2.4353325588163, 1.32718274137005, 2.16036220546812, 
    2.72933556581847, 3.22234436636791, 4.95644223992713, 1.46167525206693, 
    3.81690606242046, 3.79422693513334, 2.37372375791892, 4.51981934485957, 
    0.319619702640921, 2.22136777942069, 0.657447576522827, 3.38299622060731, 
    2.99594825366512, 4.82561674318276, 4.61055635008961, 0.999588350532576, 
    3.0135670141317, 4.56902083824389, 2.70756668644026, 1.8570082646329, 
    1.19101525633596, 2.51976897357963, 3.210360937519, 3.66874974104576, 
    4.38053260440938, 3.89196885516867, 3.19129517069086, 0.931762574473396, 
    0.365887695224956, 4.02607865049504, 3.81519310059957, 4.43216874962673, 
    3.50513802957721, 1.79077092558146, 1.65124102495611, 3.7168695544824, 
    3.58231659629382, 2.9938762774691, 1.7820083280094, 2.81697046244517, 
    2.64568548649549, 0.321083774324507, 0.201700357720256, 0.345256101572886, 
    1.84380351682194, 1.43193824333139, 3.95378023153171, 1.0867537453305, 
    1.90293225925416, 1.73558907699771, 3.74970692326315, 0.281770154833794, 
    0.723997309105471, 3.25781691004522, 0.0901412731036544, 4.84373902203515, 
    1.00294897332788, 4.80122401262634, 2.29895253665745, 0.393149207811803, 
    1.70218026614748, 0.637223341036588, 1.07310341205448, 0.570325846783817, 
    3.75451701926067, 1.13961286842823, 1.49829157744534, 4.191464248579, 
    0.374115689191967, 1.77846394828521, 2.76220632251352, 0.591986104846001, 
    2.77725224383175, 0.694206092739478, 0.182232277002186, 2.90164744481444, 
    4.46320472285151, 2.61500569409691, 0.592531125294045, 4.52516902470961, 
    2.69278525840491, 1.3527360453736, 2.26024812087417, 3.52698272559792, 
    1.79418036015704, 1.70009316992946, 0.136871858267114, 1.7957616772037, 
    3.17168297595344, 0.466970148263499, 1.65315211634152, 4.09610666916706, 
    0.326487204292789, 3.25591150205582, 1.31828204495832, 0.486518631223589, 
    2.16823832946829, 0.225406098179519, 2.96029959921725)), out.attrs = list(
        dim = structure(10:11, .Names = c("CITIZENSHIP", "Year")), 
        dimnames = list(CITIZENSHIP = c("CITIZENSHIP=Argentina", 
        "CITIZENSHIP=Brazil", "CITIZENSHIP=Guatemala", "CITIZENSHIP=Uruguay", 
        "CITIZENSHIP=Haiti", "CITIZENSHIP=Jamaica", "CITIZENSHIP=Barbados", 
        "CITIZENSHIP=Ecuador", "CITIZENSHIP=Honduras", "CITIZENSHIP=Trinidad"
        ), Year = c("Year=2005", "Year=2006", "Year=2007", "Year=2008", 
        "Year=2009", "Year=2010", "Year=2011", "Year=2012", "Year=2013", 
        "Year=2014", "Year=2015"))), class = "data.frame", row.names = c(NA, 
    -110L))
    
    library(tidyverse)
    library(scales)
    
    ggplot(South_West, aes(x = Year, y = YUM, col = CITIZENSHIP)) +
      geom_line() +
      geom_point() +
      geom_text(data = . %>% filter(Year == max(Year)),
                aes(x = Inf, y = YUM, label = CITIZENSHIP),
                hjust = -0.1, vjust = 0.4) +
      coord_cartesian(expand = FALSE, clip = "off") +
      scale_y_log10() +
      scale_x_continuous(breaks = scales::pretty_breaks(10)) +
      ggtitle("Yuma Apprehensions By Country") +
      xlab("Year") +
      ylab("Apprehensions") +
      theme(legend.position = "none",
            plot.margin = unit(c(1,6,1,1), "lines"))
    

    【讨论】:

    • 感谢您的帮助!快速提问,名字似乎重叠,你知道分散文本的方法吗?
    • 是的 - @Uwe 下面的回答是防止数据标签重叠的绝佳解决方案
    【解决方案2】:

    Jared's excellent answer 中,某些标签确实重叠,例如巴巴多斯和阿根廷。这可以使用 包解决(请参阅详细的ggrepel examples page)。

    Jared's answer and data 为基础,

    library(ggplot2)
    library(ggrepel)
    library(dplyr)
    
    ggplot(South_West, aes(x = Year, y = YUM, colour = CITIZENSHIP)) +
      geom_line() +
      geom_point() +
      geom_label_repel(data = . %>% filter(Year == max(Year)),
                       aes(x = Year, y = YUM, label = CITIZENSHIP), 
                       xlim = c(-Inf, Inf), 
                       segment.curvature = -0.1,
                       nudge_x = 0.3, direction = "y", hjust = "left") +
      coord_cartesian(expand = TRUE, clip = "off") +
      scale_y_log10() +
      scale_x_continuous(breaks = scales::pretty_breaks(10)) +
      scale_colour_discrete(guide = "none") +
      ggtitle("Yuma Apprehensions By Country") +
      xlab("Year") +
      ylab("Apprehensions") +
      theme(plot.margin = unit(c(1,6,1,1), "lines"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      相关资源
      最近更新 更多