Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在ggplot2中删除图例键之间的空格

如何在ggplot2中删除图例键之间的空格
EN

Stack Overflow用户
提问于 2016-01-07 05:20:32
回答 1查看 1.3K关注 0票数 14

注意:,在与讨论之后,更新了,因为我的问题可能是ggplot中的一个错误。基本上,以前我能够使用ggplot在图例键之间没有空格的情况下创建一个条形图(如链接2一样,图2是其中的一个示例输出)。但是现在,ggplot似乎在图例键之间自动添加了空格.

原始帖子

我想创造一个有传奇色彩的酒馆。我正在做的一个例子是:

代码语言:javascript
运行
AI代码解释
复制
b <- c("A","A","A","B","B","B", "A","A","A","B","B","B", "A","A","A","B","B","B")
c <- c(11,22,33,99,88,77, 44,55,66,61,62,63, 83,85, 87, 84,86, 88)

dft <- data.frame(b,c)

ggplot(dft, aes(b,c, fill=b))+
  stat_summary(fun.y=mean, geom="bar", position="dodge", colour="black", size=.2)+
  scale_fill_manual(values=c("grey", "white"))+
  theme(legend.key = element_rect(colour = 'black', size=.01)) 
ggsave("T3.jpg")

我遇到的问题是,ggplot似乎会自动在两个图例键之间创建空间。

图1

有没有办法移除图例键之间的这个空格。有关我想要做的事情的示例,请参见下面的图2。

图2

见链接1已经提出了一个类似的问题,目的是在图例键之间创造更多的空间,但不幸的是,没有任何答案帮助我解决我的问题(即移除图例键之间的空间)。

我还看到了一个链接,其中的条形图显示,似乎可以删除图例键之间的空格:链接2。然而,当将脚本调整到我的示例时,同样的问题出现了(图例键之间的空格)。

为什么这个链接上的条形图没有显示空格,而当我试图复制这个空间时,这个空间是添加在图例键之间的吗?我也许还应该补充一点,我最近更新了ggplot。这跟这事有关系吗?

代码语言:javascript
运行
AI代码解释
复制
dft2<-ddply(dft,.(b),plyr::summarize, meanc = mean(c))

ggplot(data=dft2, aes(x=b, y=meanc, fill=b)) + 
   geom_bar(stat="identity",position=position_dodge(), colour="black", size=.3) +
   scale_fill_manual(values=c("grey", "white")) +
   theme(legend.key = element_rect(colour = 'black', size=.01)) 
ggsave("T2.jpg")

任何关于如何解决这一问题的建议都将受到欢迎。顺便说一句,增加更多的空间对我来说也是一个潜在的解决方案,但正如上一篇文章(链接1)所看到的那样,这可能不容易在ggplot中实现。

开始编辑

为了完整起见,我将粘贴到我原来的ggplot脚本中,该脚本用于在图例键之间生成一个没有空格的图例(图2是用该脚本创建的--图2中省略了条形图等,因为这个问题只涉及图例):

对于summarySE函数,见链接3

代码语言:javascript
运行
AI代码解释
复制
slc <- summarySE(sl, measurevar="EStroop.ART", groupvars=c("Etarget","Econgruency"), na.rm=T)

ggplot(data=slc, aes(x=Etarget, y=EStroop.ART, fill=Econgruency))+ 
  geom_bar()+
  geom_bar(stat="identity", position=position_dodge(), colour="black",     show_guide=FALSE, size=0.15)+
  geom_errorbar(aes(ymin=EStroop.ART-ci, ymax=EStroop.ART+ci),
                width=0.2, # Width of the error bars
                position=position_dodge(.9), size=0.15)+
  labs(x="Target", y="Adjusted Reaction Time (milliseconds)")+ #set other    titles 
  scale_fill_manual(values=c("grey", "white"))+
  theme(axis.title.x = element_text(face="bold", vjust=0.1, size =6),
        axis.title.y = element_text(face="bold", vjust=1.0, size =6),
        axis.text.x = element_text(size = 5, colour="black"),
        axis.text.y = element_text(size = 5, colour="black"),
        legend.key = element_rect(colour = 'black', size=.2), # to change border of the legend box
        legend.text=element_text(size = 4),
        legend.title=element_blank(),
        panel.grid.major = element_line(size=.20),
        panel.grid.minor = element_line(size=.1),
        axis.ticks=element_line(size=.2),
        axis.line=element_line(colour="black", size=0.15),
        legend.key.size = unit(.3, "cm"))+ # size of legend box
  coord_cartesian(ylim=c(500,700)) # to "zoom" in on the graph 
ggsave("ES_cong.tiff", width=86, height=60, units='mm', dpi=1200)  

端编辑

EN

回答 1

Stack Overflow用户

发布于 2020-09-10 15:05:58

这可以通过牛仔绘图包中的rectangle_key_glyph()函数来解决。它有一个选项,可以设置确切的填充,可以是积极的,也可以是消极的。

默认情况下,不存在缺口。这会使盒子周围的两条线并排画,这意味着它们看起来更厚。这可能不是你想要的。

代码语言:javascript
运行
AI代码解释
复制
library(ggplot2)
library(cowplot)

b <- c(
  "A", "A", "A", "B", "B", "B", "A", "A", "A",
  "B", "B", "B", "A", "A", "A", "B", "B", "B"
)
c <- c(
  11, 22, 33, 99, 88, 77, 44, 55, 66,
  61, 62, 63, 83, 85, 87, 84, 86, 88
)

dft <- data.frame(b, c)

ggplot(dft, aes(b, c, fill = b))+
  stat_summary(
    fun = mean, geom = "bar", position = "dodge", 
    colour = "black", size = 0.2,
    key_glyph = rectangle_key_glyph(
      colour = "black"
    )
  ) +
  scale_fill_manual(values = c("grey", "white")) +
  theme(legend.key = element_blank()) 

我更喜欢的解决方案是把差距拉大,所以很明显它就在那里。

代码语言:javascript
运行
AI代码解释
复制
ggplot(dft, aes(b, c, fill = b))+
  stat_summary(
    fun = mean, geom = "bar", position = "dodge", 
    colour = "black", size = 0.2,
    key_glyph = rectangle_key_glyph(
      colour = "black",
      padding = margin(3, 3, 3, 3)
    )
  ) +
  scale_fill_manual(values = c("grey", "white")) +
  theme(legend.key = element_blank())

但是,你也可以使用负填充,让线完全地躺在对方的中间。这里用size = 2来夸大效果。

代码语言:javascript
运行
AI代码解释
复制
ggplot(dft, aes(b, c, fill = b))+
  stat_summary(
    fun = mean, geom = "bar", position = "dodge", 
    colour = "black", size = 2,
    key_glyph = rectangle_key_glyph(
      colour = "black",
      padding = margin(-2, -2, -2, -2)
    )
  ) +
  scale_fill_manual(values = c("grey", "white")) +
  theme(legend.key = element_blank())

注意,在所有这些情况下,我都设置了legend.key = element_blank()。我们不想在我们的传奇钥匙下面画任何东西。这是特别重要的,当你使用一个积极的填充。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34656202

复制
相关文章
使用 Python 从字典键中删除空格
Python是广泛用于数据分析,Web开发,AI的平台,并在自动化的帮助下执行许多不同类型的任务。对我们来说,了解 python 的不同功能很重要。在本文中,我们将了解字典功能以及如何使用 python 删除键之间的空格。此功能主要用于根据需要存储和检索数据,但有时字典的键值之间可能存在空格。当用户希望访问数据时,甚至在要编辑数据的情况下,这会导致错误。
很酷的站长
2023/08/11
6060
使用 Python 从字典键中删除空格
linux debian 后退键 删除 变了空格 的解决方法
在下载某些依赖或者安装包后发现终端乱序,输入命令时按退格键不能回退反而向后加空格;并且某些快捷键无法使用等问题;
怪兽
2023/01/05
1.7K0
R语言ggplot2作图如何去掉图例中的NA
https://stackoverflow.com/questions/45493163/ggplot-remove-na-factor-level-in-legend
用户7010445
2021/07/12
4.4K0
R语言ggplot2作图如何去掉图例中的NA
如何在 Python 中的绘图图形上手动添加图例颜色和图例字体大小?
Plotly 的 update_layout() 方法以及legend_font_color和legend_font_size参数可用于手动添加图例颜色和字体大小。下面提供了语法的插图 -
很酷的站长
2023/08/11
1.1K0
如何在 Python 中的绘图图形上手动添加图例颜色和图例字体大小?
R语言之可视化①⑨子ggplot2中的图例修改
自定义ggplot2图的图例。这里我们要修改非数据组件,通常通过theme()命令来完成。 此页面受到ggplot2(?theme)帮助页面的强烈启发。 另外,请访问非常强大的ggplot2文档以获取更多信息。我们从mtcars数据集和默认图例开始:
用户1359560
2019/02/22
4.8K0
R语言之可视化①⑨子ggplot2中的图例修改
eclipse中怎么自动补全_空格键坏了
使用eclipse在创建其他工作区间的时候,想要配置代码自动补全,因为老是忘记,每次都要从网上查找,于是就自己总结一下。
全栈程序员站长
2022/09/27
8790
ggplot2学习笔记——图例系统及其调整函数
最近确实更得太少了,也不知道自己在忙啥,反正感觉不到忙碌的收获,要不是好多小伙伴儿在后台催更,感觉都快忘了还有要更新公众号这回事儿, 进入2018年以来,1月份更新了3篇,2月份更新了4篇,三月份2篇,自己都感觉过分了哈哈~ 今天赶紧找空写一篇~ 学过ggplot2的小伙伴儿们大概都了解过,ggplot2的语法系统将数据层和美化层分开,这种理念给了学习更多的选择,你可以只学习数据层,这样大可保证做出正确的图来(虽然质量不敢恭维),也可以同时学习数据层和美化层(当然你要耗费双倍的精力,因为ggplot2理念几
数据小磨坊
2018/04/12
2.6K0
ggplot2学习笔记——图例系统及其调整函数
ggplot2作图共享图例方法一:ggpubr包的ggarrange()函数以及调整图例的布局
因为三个图的图例是一样的,我们完全可以只显示一个图例就够了。这里拼图使用的函数是ggpubr这个包里的ggarrange()函数,这个函数里有一个参数是common.legend,默认好像是FALSE,我们直接设置成TRUE就好了,代码如下
用户7010445
2021/03/15
4.9K0
ggplot2 修改图例的一些操作
第一种方法是直接在原数据集上改,因为这个图例的标题对应的是数据的列名,我把列名改了就可以了
用户7010445
2020/08/07
2.2K0
ggplot2 修改图例的一些操作
技术|如何在 Linux 中不使用功能键在 TTY 之间切换
本简要指南介绍了在类Unix操作系统中如何在不使用功能键的情况下切换TTY。在进一步讨论之前,我们将了解TTY是什么。正如在AskUbuntu论坛的一个答案中所提到的,TTY这个词来自TeleTYpewriter(电传打字机)。在Unix的早期,连接到计算机的用户终端就是机电的电传机或电传打字机(简称tty)。从那时起,TTY这个名称继续用于纯文本控制台。如今,所有文本控制台都代表虚拟控制台,而不是物理控制台。TTY命令打印连接到标准输入的终端的文件名。
知忆
2021/07/06
4.2K0
如何在docker中删除images
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/90/
羽翰尘
2019/11/20
2.6K0
php删除字符串的空格
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105882.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
3.7K0
如何在Python中删除(删除)文件和目录
本教程说明了如何使用os,pathlib和shutil模块中的功能删除文件和目录。
用户5005176
2021/08/10
13.3K0
C#如何删除字符串中任何位置的空格?
你或许知道你能使用String.Trim()方法,去除字符串的头和尾的空格。不幸运的是,这个Trim方法不能去除字符串中间的C#空格。
高一峰
2020/09/22
12K0
C#如何删除字符串中任何位置的空格?
代码之间为什么要加空格?
以上,是我在知乎上看到的一个题目,感觉蛮清新的,说得似乎有理有据。就好像在说,据我观察,大多数人喜欢早晚刷牙,而且还会嘲笑不刷牙的人。这些支持者认为,刷牙有益于牙齿健康,空腔清新。但我不喜欢刷牙,因为我牙齿没坏,吃嘛嘛香。我不认为刷牙能保护牙齿健康,反而很浪费时间。
沉默王二
2020/06/17
1.3K0
「R」魔性的ggplot2,多个图例时顺序会变?
如果我们要改变图例顺序,按下面的操作,将color变成1,然后fill使用默认排序:
王诗翔呀
2020/07/02
3.7K0
Latex中的空格
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124692.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/21
1.2K0
自动删除vim中行尾空格
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序手艺人
2019/10/22
5.1K0
latex中的空格
两个quad空格 a \qquad b a \qquad b 两个m的宽度 quad空格 a \quad b a \quad b 一个m的宽度 大空格 a\ b a\ b 1/3m宽度 中等空格 a\;b a\;b 2/7m宽度 小空格 a\,b a\,b 1/6m宽度 没有空格 ab ab\, 紧贴 a\!b a\!b 缩进1/6m宽度
狼啸风云
2019/08/18
2.8K0
点击加载更多

相似问题

ggplot2增加图例键之间的空间

26

删除条之间的空格ggplot2

20

在ggplot2中增加图例键之间的垂直间距

13

ggplot2中带空格的图例标签

172

不同的图例- ggplot2中相同图例中的键

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档