Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 自定义晶格条形图中条形图的边框图形_R_Panel_Bar Chart_Data Visualization_Lattice - Fatal编程技术网

R 自定义晶格条形图中条形图的边框图形

R 自定义晶格条形图中条形图的边框图形,r,panel,bar-chart,data-visualization,lattice,R,Panel,Bar Chart,Data Visualization,Lattice,在我绝望地试图发表一篇论文的过程中,我试图从一个简单的数据中制作出一幅奇特的信息图表,但毫无结果,希望用一幅吸引人的图片来吸引评论家。作为一种选择,我正在制作条形图,每个条形图的底部都有一条延长线,类似于由创建的条形图 因此,总体而言,进展顺利。但是我使用了一个非常便宜的技巧在每个条的底部创建那些“扩展边框”——我在与每个条的底部大致重叠的任意位置添加panel.abline(…)。让我举例说明: data <- t(data.frame(urban = 10, suburban = 6,

在我绝望地试图发表一篇论文的过程中,我试图从一个简单的数据中制作出一幅奇特的信息图表,但毫无结果,希望用一幅吸引人的图片来吸引评论家。作为一种选择,我正在制作条形图,每个条形图的底部都有一条延长线,类似于由创建的条形图

因此,总体而言,进展顺利。但是我使用了一个非常便宜的技巧在每个条的底部创建那些“扩展边框”——我在与每个条的底部大致重叠的任意位置添加
panel.abline(…)
。让我举例说明:

data <- t(data.frame(urban = 10, suburban = 6, rural = 4))#exmaple data 
barchart(d, col="orange", xlim=c(0,15),
         scales=list(y=list(alternating=0)),#get rid of y-axis labels,
         border = "transparent",#make bars borders transprent
         par.settings = list(axis.line = list(col = "transparent")),
         panel = function(x,y,...) {
           panel.barchart(x,y,...)
           panel.abline(h=seq(0.66, 3.66,1), col="orange", lwd=0.7)#pathetic hack
           panel.axis(side=c("left"), at=1:3, half=F, ticks = F, 
                      outside=F, labels=rownames(d))

         })

data您需要创建一个自定义面板函数,该函数考虑了条的
框宽度。经过一些实验后,我想出了一个似乎有效的方法:

panel = function(x, y, ...) {
  dots <- list(...)
  br <- dots$box.ratio
  panel.barchart(x, y, ...)
  panel.abline(h = seq_along(x) - 0.5*(br/(br+1)), col="orange", lwd=0.7)
}

就这些,正是我需要的,谢谢@Andrie!PS:你知道如何去掉条形图左侧的灰色垂直线吗?@GeekOnAcid我对使用格子一无所知!刚刚弄明白-需要将
reference.line=list(col=“transparent”)
添加到
par.settings的列表中。
d <- t(data.frame(urban = 10, suburban = 6, rural = 4, other=5))

barchart(d, col="orange", xlim=c(0, 15), box.ratio=5,
         scales=list(y=list(alternating=0)), 
         border = "transparent", 
         par.settings = list(axis.line = list(col = "transparent")), 
         panel = function(x, y, ...) {
           dots <- list(...)
           br <- dots$box.ratio
           panel.barchart(x, y, ...)
           panel.abline(h = seq_along(x) - 0.5*(br/(br+1)), col="orange", lwd=0.7)
         }
)
d <- t(data.frame(urban = 10, suburban = 6, rural = 4, other=5, rubbish=7))

barchart(d, col="orange", xlim=c(0, 15), box.ratio=9,
         scales=list(y=list(alternating=0)), 
         border = "transparent", 
         par.settings = list(axis.line = list(col = "transparent")), 
         panel = function(x, y, ...) {
           dots <- list(...)
           br <- dots$box.ratio
           panel.barchart(x, y, ...)
           panel.abline(h = seq_along(x) - 0.5*(br/(br+1)), col="orange", lwd=0.7)
         }
)