我想首先使用ggmap绘制以经度和纬度为轴的特定区域。
然后,考虑到经度和纬度,我想将ggplot2小图放在特定位置。这些可以是主题最少的酒吧。
我的数据库可能包含以下列:
1. town
2. longitude
3. latitude
4. through 6. value A, B, C
Run Code Online (Sandbox Code Playgroud)
我生成一个图(伪代码)
p <- ggmap(coordinates)
Run Code Online (Sandbox Code Playgroud)
而且我有最小的ggplot2设计
q<-ggplot2()+geom_bar(....)+ ... x-axis null y axis null minimal template
Run Code Online (Sandbox Code Playgroud)
如何将两种设计结合在一起,以使ggmap具有在地图的特定坐标上施加的最小最小ggplot图?
这是我使用饼图作为散点图上的点所做的。您可以使用相同的概念在特定纬度/经度坐标上将条形图放置在地图上。
R :: ggplot2 :: geom_points:如何用饼图交换点?
大部分使用您改编的代码,但我不得不更新几行。
p <- ggmap(Poland) + coord_quickmap(xlim = c(13, 25), ylim = c(48.8, 55.5), expand = F)
Run Code Online (Sandbox Code Playgroud)
此更改可以更好地预测并消除有关重复刻度的警告。
df.grobs <- df %>%
do(subplots = ggplot(., aes(1, value, fill = component)) +
geom_col(position = position_dodge(width = 1),
alpha = 0.75, colour = "white") +
geom_text(aes(label = round(value, 1), group = component),
position = position_dodge(width = 1),
size = 3) +
theme_void()+ guides(fill = F)) %>%
mutate(subgrobs = list(annotation_custom(ggplotGrob(subplots),
x = lon-0.5, y = lat-0.5,
xmax = lon+0.5, ymax = lat+0.5)))
Run Code Online (Sandbox Code Playgroud)
在这里,我为您明确指定了躲闪宽度,geom_col以便与匹配geom_text。我使用round(value, 1)了标签美学,它会自动从调用中继承x和y美学subplots = ggplot(...)。我还手动将尺寸设置为非常小,以便标签可以容纳,但随后我将每个子对象的总体边界框从每个方向上的0.35增大到0.5。
df.grobs %>%
{p +
.$subgrobs +
geom_text(data=df, aes(label = name), vjust = 3.5, nudge_x = 0.065, size=2) +
geom_col(data = df,
aes(Inf, Inf, fill = component),
colour = "white")}
Run Code Online (Sandbox Code Playgroud)
我在这里所做的唯一更改是为了“鬼魂”的美学geom_col。当将它们设置为0,0时,根本不会绘制它们,因为这不在x和y范围内。通过使用Inf,Inf,它们被绘制在最右上角,足以使它们不可见,但仍为图例绘制。
| 归档时间: |
|
| 查看次数: |
847 次 |
| 最近记录: |