R 手动将第二个条形图添加到现有条形图(使用Add=T)

R 手动将第二个条形图添加到现有条形图(使用Add=T),r,bar-chart,R,Bar Chart,在base R中是否有方法手动将第二个条形图添加到现有条形图中。如果两个序列来自同一个数据对象(使用barplot(…旁边=T)),或者我想可以绘制矩形(rect(…)),将barplot包裹起来。如果您的数据来自不同的对象,那么如何使用barplot功能进行此操作?如何控制杆的位置 我尝试使用空格参数(显然不起作用): 更新:如何工作 为了让我最终——我希望——理解宽度和空间参数,我们可以绘制一个轴,并使用蓝色数据的参数 barplot(h1, width = 0.5, space = 2,

在base R中是否有方法手动将第二个条形图添加到现有条形图中。如果两个序列来自同一个数据对象(使用
barplot(…旁边=T)
),或者我想可以绘制矩形(
rect(…)
),将
barplot
包裹起来。如果您的数据来自不同的对象,那么如何使用
barplot
功能进行此操作?如何控制杆的位置

我尝试使用空格参数(显然不起作用):

更新:如何工作

为了让我最终——我希望——理解宽度和空间参数,我们可以绘制一个轴,并使用蓝色数据的参数

barplot(h1, width = 0.5, space = 2, col='red')
axis(1, seq(0, 10, 0.5)) #way out of the plot region
barplot(h2, width = 0.25, space = c(4,2,4), col='blue', add=T)

由此看来(如果我错了,请纠正我):

1.
宽度
是每个条的宽度-根据需要回收

2.
空间
控制前一条(左侧)的空间或第一条的0空间,并计算为当前条的宽度*空间-根据需要回收。因此,第一个蓝色条从(空格到0)0.25*4=1开始,其右侧为1+0.25=1.25;第二个条从1.25+0.25*2=1.75开始,其右侧为1.75+0.25=2。等等…

您可以这样做:

h1 <- c(10,5,1)
h2 <- c(8, 3, 1)
barplot(h1, width = 0.5, space = 2, col='red')
barplot(h2, width = 0.5, space = c(3,2,2), col='blue', add=T)
h1您可以这样做:

h1 <- c(10,5,1)
h2 <- c(8, 3, 1)
barplot(h1, width = 0.5, space = 2, col='red')
barplot(h2, width = 0.5, space = c(3,2,2), col='blue', add=T)

h1我一定是误解了空格参数(来自手动:每个条前剩余的空间量(作为平均条宽的一部分)。可能以单个数字或每个条一个数字的形式给出。因此,当你给出c(3,2,2)时,所有的东西都移动了1(与2(也称为c(2,2,2,2))相比)-是吗?完全正确。每个元素指定每个条的空间。这与使用
next=T
时所做的相同。默认值为
space=c(0,1)
这意味着不同组的条彼此相邻,每对条之间有1个单位的空间。我删除了我的答案,因为它们几乎相同,只是我包含了
xlim=c(1,5)
在第一个
条形图中
,否则我会将最后一个蓝色条部分放在绘图之外。@Lamia您没有指定宽度。如果我没记错的话。@Masoud确实我没有包括
宽度
,但即使我复制了您的代码,也只有在我同时指定
xlim
的情况下才会起作用。我一定误解了空格参数(来自手动:每根钢筋前剩余的空间量(作为平均钢筋宽度的一部分)。可以以单个数字或每根钢筋一个数字的形式给出。因此,当您给出c(3,2,2)时,所有内容都移动1(与2(又名c(2,2,2))相比)-是吗?完全正确。每个元素指定每个条的空间。这与使用
next=T
时所做的相同。默认值为
space=c(0,1)
这意味着不同组的条彼此相邻,每对条之间有1个单位的空间。我删除了我的答案,因为它们几乎相同,只是我包含了
xlim=c(1,5)
在第一个
条形图中
,否则我会将最后一个蓝色条部分放在绘图之外。@Lamia您没有指定宽度。如果我没记错的话。@Masoud确实我没有包括
宽度
,但即使我复制了您的代码,也只有在同时指定
xlim
的情况下,它才会起作用。
h1 <- c(10,5,1)
h2 <- c(8, 3, 1)
barplot(h1, width = 0.5, space = 2, col='red')
barplot(h2, width = 0.5, space = c(3,2,2), col='blue', add=T)