如何在ggplot2中分别缩放线和点的大小

代码如下:

set.seed(123)
d1=data.frame(x=runif(10),y=runif(10),z=runif(10,1,10))
d2=data.frame(x=runif(10),y=runif(10),z=runif(10,100,1000))
ggplot()+geom_point(aes(x,y,size=z),data=d1)+
geom_line(aes(x,y,size=z),data=d2)

结果是这样的:

在此处输入图片说明

点的大小太小,因此我想按更改其大小scale_size但是,似乎直线和点都受影响。所以我想知道是否有一种方法可以用单独的图例分别缩放线和点?

欧顺

我能想到的两种方法是1)结合两个传奇人物或2)破解另一个传奇美学。@Mike Wise在上面的评论中都提到了这两个。

方法1:使用grob在同一地块中组合2个单独的图例。

我使用此答案中的代码来获取图例。Baptiste的rangeGrob小插图是有用的参考。

library(grid); library(gridExtra)

#Function to extract legend grob
g_legend <- function(a.gplot){
  tmp <- ggplot_gtable(ggplot_build(a.gplot))
  leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
  legend <- tmp$grobs[[leg]]
  legend
}

#Create plots
p1 <- ggplot()+  geom_point(aes(x,y,size=z),data=d1) + scale_size(name = "point")
p2 <- ggplot()+  geom_line(aes(x,y,size=z),data=d2) + scale_size(name = "line")
p3 <- ggplot()+  geom_line(aes(x,y,size=z),data=d2) + 
        geom_point(aes(x,y, size=z * 100),data=d1)  # Combined plot
legend1 <- g_legend(p1)
legend2 <- g_legend(p2)
legend.width <- sum(legend2$width)  

gplot <- grid.arrange(p3 +theme(legend.position = "none"), legend1, legend2,
             ncol = 2, nrow = 2,
             layout_matrix = rbind(c(1,2 ),  
                                   c(1,3 )), 
             widths = unit.c(unit(1, "npc") - legend.width, legend.width))
grid.draw(gplot)

打印注意事项:使用arrangeGrob()代替grid.arrange()我不得不使用png; grid.draw; dev.off保存(arrangeGrob)情节。

大致

方法2:入侵另一个美学传说。

MilanoR在这方面有出色的文章,着重于颜色而不是尺寸。更多SO示例:1)离散颜色和2)颜色渐变

#Create discrete levels for point sizes (because points will be mapped to fill)
d1$z.bin <- findInterval(d1$z, c(0,2,4,6,8,10), all.inside= TRUE)  #Create bins

#Scale the points to the same size as the lines (points * 100).  
#Map points to a dummy aesthetic (fill)
#Hack the fill properties.
ggplot()+  geom_line(aes(x,y,size=z),data=d2) + 
  geom_point(aes(x,y, size=z * 100, fill = as.character(z.bin)),data=d1) +
  scale_size("line", range = c(1,5)) + 
  scale_fill_manual("points", values = rep(1, 10) , 
                    guide = guide_legend(override.aes = 
                              list(colour = "black", 
                              size = sort(unique(d1$z.bin)) )))

legend_hack

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ggplot2可以在一个图例中分别控制点大小和线大小(线宽)吗?

如何在rmarkdown中缩放ggplot2图的标签大小

ggplot2和Shiny:如何使用图形大小缩放图例的大小?

如何在ggplot2中组合点图和箱图图例?

如何更改ggplot2中分类变量的x轴大小?

如何在ggplot2中手动添加误差线和n =样本大小?

如何在ggplot2中增加图例的大小

用ggplot在R中分别绘制点和线

如何在ggplot2中创建汇总数据帧的缩放和多面聚类条形图?

ggplot2:如何在图例键中分隔geom_polygon和geom_line?

如何在ggplot2散点图中更改特定颜色的点大小

如何在ggplot2中绘制logit和概率

如何在具有不同画布大小的ggplot2图的网格中保持一致的轴缩放

如何在多个多方面ggplot2图形中实现相同的方面大小和比例?

ggplot2:理解点的大小

如何缩放ggplot2中的背景图片?

ggplot2 :: position_stack中的距离如何缩放?

如何在单个ggplot2图中指定不同的调色板和线条大小

如何在ggplot2中标记geom_dotplot的点?

如何在ggplot2中绘制具有不同因子的一维点的密度

如何在R studio ggplot2中的点上放置数据?

R中ggplot2的对数缩放

如何在ggplot2中为树图的标签文本设置相同的大小

如何在ggplot2中增加ggtitle的字体大小

如何在ggplot2中更改默认字体大小

如何在ggplot2 R中更改stat_poly_eq的字体大小

如何在ggplot2中指定图形大小而与轴标签无关

在ggplot2中更改轴标题和标签的大小

ggplot2中图例的位置和大小

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档