无法使用 geom_flags

问题描述

我正在尝试绘制一些数据(不幸的是主要是字符数据),并且我想使用 geom_flag 创建小标志图像以放置在 x 轴(x = 国家/地区)上的标签下以使其更清晰,因为我不能写完整的国家名称(阿根廷等长名字会一团糟)

但我得到的是下面的图像......只出现了几个标志,它们甚至没有正确显示,因为图像似乎“不够高”以包含它们。 如何修改我的代码显示所有标志并确保图像完全显示在图表中? 我知道这很复杂,非常感谢您的帮助! 这是我的代码

data$iso2 <- countrycode(data$Country,"country.name","iso2")

heatmap_trial3 <- y_Rec1 %>%
  select(iso2,Place,`ContentIoUs?`,`Comments number`,Country) %>%
  ggplot(aes(x=iso2,y=Place,group=iso2)) +
  geom_point(aes(shape=`ContentIoUs?`,size=`Comments number`,color=Country)) +
  theme(plot.background = element_rect(fill = NA),panel.background = element_rect(fill = "white")) +
  guides(size=FALSE,color=FALSE) +
  geom_flag(y =-0.75,aes(image = iso2)) +
  xlab(NULL) + expand_limits(y=-0.75)

dput() 我的数据:

结构(列表(iso2 = c(“CA”,“DE”,“DE”,“CA”,“CA”,“AU”,“RU”, "BE","BE","TR","DE","FR","CN","JP","SA","BR","RU","IT","AR","CH","US","US"),Place = structure(c(4L,3L,4L,5L,2L,5L),.Label = c("Context Intro","Context Rec 1","Protectionism",“WTO改革”、“多边主义”、“Context Rec 2”、“危机应对”、 “海关”、“Gloval 价值链”、“Context Rec 3”、“Micro-Small-Med-Entrepr.”、 “贸易融资”、“出口信贷机构”、“Context Rec 4”、“绿色贸易”、 "Foreing Investments"),class = "factor"),ContentIoUs? = c("无争议",“有争议”,“无争议”,“无争议”,“无争议”, "无争议","有争议","无争议",“无争议”,“无争议”,“无争议”,“无争议”, “无争议”,“无争议”,“无争议”,“无争议”, “无争议”,“无争议”,“无争议”,“无争议”, "无争议",“有争议”,“无争议”,“无争议”,“无争议”, “无争议”,“无争议”,“无争议”,“无争议”, “有争议”,“无争议”,“无争议”,“无争议”, “有争议”,“有争议”,“无争议”,“无争议”, “无争议”,“无争议”,“无争议”,“无争议”, "无争议",“有争议”,“有争议”,“无争议”,“无争议”, “有争议”,“无争议”,“无争议”,“无争议”, “有争议”,“有争议”,“有争议”,“无争议”, “有争议的”,“有争议的”,“有争议的”,“有争议的”,“无争议的”, "无争议",“无争议”,“无争议”,“无争议”,“无争议”, "无争议",“有争议”,“无争议”,“有争议”,“无争议”, “无争议”,“无争议”,“无争议”,“无争议”, "无争议",“有争议”,“无争议”,“无争议”,“有争议”, “无争议”,“无争议”,“无争议”,“无争议”, "无争议",“有争议”、“无争议”、“有争议”、“无争议” ),Comments number = c(2L,9L,1L,13L,15L,6L,7L,2L ),Country = c("加拿大","德国","加拿大",“澳大利亚”、“俄罗斯”、“比利时”、“比利时”、“比利时”、“比利时”、 “土耳其”、“德国”、“德国”、“德国”、“德国”、“德国”、 “德国”,“德国”,“德国”,“德国”,“德国”,“德国”, “德国”,“德国”,“德国”,“德国”,“德国”,“德国”, “德国”,“德国”,“德国”,“德国”,“德国”,“德国”, “德国”,“德国”,“德国”,“德国”,“德国”,“德国”, “德国”,“德国”,“德国”,“德国”,“德国”,“德国”, “德国”,“德国”,“德国”,“德国”,“德国”,“法国”, “法国”,“法国”,“中国”,“中国”,“中国”,“中国”,“中国”, “中国”,“中国”,“中国”,“中国”,“法国”,“法国”,“法国”, “日本”,“日本”,“日本”,“日本”,“日本”,“沙特阿拉伯”, “沙特阿拉伯”、“巴西”、“巴西”、“巴西”、“巴西”、“巴西”、 "巴西","巴西","俄罗斯",“俄罗斯”、“比利时”、“意大利”、“意大利”、“意大利”、“意大利”、“意大利”、 "意大利","意大利","阿根廷","瑞士",“阿根廷”、“意大利”、“美利坚合众国”、“美利坚合众国”、 "阿根廷",“日本”、“日本”、“美利坚合众国”、“美利坚合众国”、 "美利坚合众国")),row.names = c(NA,-114L),class = c("tbl_df","tbl","data.frame")))

解决方法

尝试将 + expand_limits(y=-1) 添加到您的 ggplot 语句中。

有关该函数作者的另一个示例,请参见 this

在将您的数据读入 data 对象后,此代码:

library(dplyr)
library(ggplot2)
library(ggimage)

data %>%
  select(iso2,Place,`Contentious?`,`Comments number`,Country) %>%
  ggplot(aes(x=iso2,y=Place,group=iso2)) +
  geom_point(aes(shape=`Contentious?`,size=`Comments number`,color=Country)) +
  theme(plot.background = element_rect(fill = NA),panel.background = element_rect(fill = "white")) +
  guides(size=FALSE,color=FALSE) +
  geom_flag(y =-0.75,aes(image = iso2)) +
  xlab(NULL) + expand_limits(y=-1)

... 为我生成这个带有未切断标志的图表: Graph result

您可以为 ygeom_flag 试验不同的 expand_limits 值。只需确保 yexpand_limits 值将图表扩展到足以使标志可见。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...