天道酬勤,学无止境

`ggplot2`axis.text 边距修改了比例位置(`ggplot2` axis.text margin with modified scale position)

问题

我不确定我是否遇到了错误或操作不正确。 在ggplot中指定axis.text边距并移动轴的位置时,设置不会保留。

在不移动轴文本的情况下,轴周围有足够的空间:

library(ggplot)

ggplot(mtcars, aes(mpg, wt)) +
    geom_point() +
    theme(axis.text.y = element_text(color = "red", margin = margin(40, 40, 40, 40)))

但是,当位置改变时,边距不适用:

ggplot(mtcars, aes(mpg, wt)) +
    geom_point() +
    scale_y_continuous(position = "right") + #This is the new line
    theme(axis.text.y = element_text(color = "red", margin = margin(40, 40, 40, 40))) 

无论axis.text是在右边还是左边,我都希望边距能够延续。 难道我做错了什么?

回答1

我相信这是因为右侧 y 轴标签的外观由theme()中的axis.text.y.right决定,虽然它继承自axis.text.y但它只继承未在axis.text.y.right本身

根据?theme中的详细信息, axis.text.y.right的继承链如下:

axis.text.y.right -> axis.text.y -> axis.text -> text

ggplot 中的默认主题是theme_grey 。 在控制台中输入theme_grey (末尾不带() ),您将看到完整的功能。 让我们看看相关的位:

function(base_size = 11, base_family = "", base_line_size = base_size/22, 
         base_rect_size = base_size/22) {

  half_line <- base_size/2

  theme(text = element_text(family = base_family, 
                            face = "plain", 
                            colour = "black",
                            size = base_size, 
                            lineheight = 0.9, 
                            hjust = 0.5, 
                            vjust = 0.5, 
                            angle = 0, 
                            margin = margin(), 
                            debug = FALSE), 

        axis.text = element_text(size = rel(0.8), 
                                 colour = "grey30"), 

        axis.text.y = element_text(margin = margin(r = 0.8 * half_line/2), 
                                   hjust = 1), 

        axis.text.y.right = element_text(margin = margin(l = 0.8 * half_line/2), 
                                         hjust = 0), 
        ...
        complete = TRUE)
}

?element_text显示element_text期望的完整参数列表:

element_text(family = NULL, face = NULL, colour = NULL, size = NULL,
  hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL,
  color = NULL, margin = NULL, debug = NULL, inherit.blank = FALSE)

鉴于所有继承,axis.text.y.right 在axis.text.y.right中的实际参数是theme_grey

  • family = base_family (来自text
  • face = "plain" (来自text
  • color = "grey30" (来自axis.text ,它覆盖了text"black"
  • size = base_size的 80%(来自axis.textrel(0.8)textbase_size的修改)
  • hjust = 0 (来自axis.text.y.right ,它覆盖axis.text.y1 ,它覆盖了text0.5
  • vjust = 0.5 (来自text
  • 角度 = 0 (来自text
  • lineheight = 0.9 (来自text
  • margin = margin(l = 0.8 * half_line/2) (来自axis.text.y.right ,覆盖axis.text.ymargin = margin(r = 0.8 * half_line/2 ,覆盖textmargin() )
  • debug = FALSE (来自text
  • inherit.blank = FALSE ( element_text的默认参数)

因此,给定如下一段代码, axis.text.y.right将继承color = "red" (覆盖axis.textcolour = "grey30" )。 但由于它有自己的 margin 参数,它不会继承margin = margin(40, 40, 40, 40)

ggplot(mtcars, aes(mpg, wt)) +
    geom_point() +
    scale_y_continuous(position = "right") +
    theme(axis.text.y = element_text(color = "red", margin = margin(40, 40, 40, 40))) 

指定axis.text.y.right而不是axis.text.y可以解决问题:

ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  scale_y_continuous(position = "right") +
  theme(axis.text.y.right = element_text(color = "red", margin = margin(40, 40, 40, 40))) 
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在R中使用ggplot时,如何删除绘图区域周围的边距?(When using ggplot in R, how do I remove margins surrounding the plot area?)
    问题 我正在尝试生成一些分形,并且对R中的ggplot有一个关于边距的问题。我正在使用以下代码来生成分形。 library(ggplot2) library(grid) max_iter=25 cl=colours() step=seq(-2,0.8,by=0.005) points=array(0,dim=c(length(step)^2,3)) t=0 for(a in step) { for(b in step+0.6) { x=0;y=0;n=0;dist=0 while(n<max_iter & dist<4) { n=n+1 newx=a+x^2-y^2 newy=b+2*x*y dist=newx^2+newy^2 x=newx;y=newy } if(dist<4) { color=24 # black } else { color=n*floor(length(cl)/max_iter) } t=t+1 points[t,]=c(a,b,color) } } df=as.data.frame(points) ggplot(data=df, aes(V1, V2, color=cl[V3]))+ geom_point() + theme(panel.background=element_blank(), panel.grid.major=element_blank(
  • 在ggplot2生成的绘图下方显示文本(Displaying text below the plot generated by ggplot2)
    问题 我试图在ggplot2中创建的绘图下方显示一些有关数据的信息。 我想使用绘图的X轴坐标来绘制N变量,但是Y坐标需要距屏幕底部10%。 实际上,所需的Y坐标已作为y_pos变量存在于数据帧中。 我可以想到使用ggplot2的3种方法: 1)在实际图下方创建一个空图,使用相同的比例,然后使用geom_text在空白图上绘制数据。 这种方法行之有效,但极其复杂。 2)使用geom_text绘制数据,但以某种方式将y坐标用作屏幕的百分比(10%)。 这将迫使数字显示在图的下方。 我不知道正确的语法。 3)使用grid.text显示文本。 我可以很容易地将其设置在屏幕底部的10%处,但是我不知道如何设置X坐标以匹配绘图。 我尝试使用grconvert捕获初始X位置,但无法使其正常工作。 下面是带有虚拟数据的基本图: graphics.off() # close graphics windows library(car) library(ggplot2) #load ggplot library(gridExtra) #load Grid library(RGraphics) # support of the "R graphics" book, on CRAN #create dummy data test= data.frame( Group = c("A", "B", "A","B
  • How can I put a transformed scale on the right side of a ggplot2?(How can I put a transformed scale on the right side of a ggplot2?)
    问题 我正在创建一个图表,显示湖泊水位随时间的变化。 我在下面附加了一个简单的示例。 我想在绘图的右侧添加一个比例尺(刻度线和注释),以英尺为单位显示标高。 我知道ggplot2不允许使用两种不同的比例尺(请参阅具有2个y轴,左侧为一个y轴,右侧为另一个y轴的图),但是由于这是相同比例的变换,因此有一种方法可以做这个? 我宁愿继续使用ggplot2,而不必还原到plot()函数。 library(ggplot2) LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100) p <- ggplot(data=LakeLevels) + geom_line(aes(x=Day,y=Elevation)) + scale_y_continuous(name="Elevation (m)",limits=c(75,125)) p 回答1 您应该查看此链接http://rpubs.com/kohske/dual_axis_in_ggplot2。 我已经为您的示例改编了此处提供的代码。 此修复程序似乎很“ hacky”,但可以帮助您解决问题。 剩下的唯一一块是弄清楚如何在图形的右轴上添加文本。 library(ggplot2) library(gtable) library(grid)
  • 使用 multiplot 设置图之间的边距(Set margins between plots using multiplot)
    问题 要显示多个图,我使用 multiplot (http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/),现在我有两个图共享相同的 x 轴范围并绘制在彼此之上: multiplot(plot1, plot2) 我使用以下方法删除了 x 轴标签和标题: xlab(NULL) + theme(axis.text.x=element_blank(),axis.ticks.x=element_blank()) 但两个地块之间仍然存在白边。 我怎样才能使这个边距更小或删除它? 回答1 要减少图之间的空间,请删除顶部图的底部边距并删除底部图的顶部边距。 下面的代码将这些边距设置为 0,这仍然会导致图之间有一点点空白。 您可以使这些边距略微为负(可能是 -0.1 左右)以完全去除空白。 而不是multiplot功能,我们使用grid.arrange从gridExtra包铺陈情节。 : library(grid) library(gridExtra) ## Create two sample plots with the same x axis using built-in mtcars data frame # Top plot: Remove bottom margin, x-labels, and x
  • 删除ggplot2中的绘图边距(Remove Plot Margins in ggplot2)
    问题 我正在尝试在R中使用ggplot2和ggsave(使用Cairo)来生成png图表。我在自定义主题以删除边距时遇到问题。 目前,我正在使用: ... + theme(plot.margin=unit(c(0,0,0,0),"mm")) 这似乎适用于我图的四个侧面中的两个,它完全消除了顶部和右侧的边距,但是左侧和底部的边距仍然很大。 有没有办法完全删除这些? 下图说明了该问题: 如果有一个可复制的示例有用,请告诉我,我将一起解决。 编辑: library("ggplot2") library("scales") library("Cairo") library("grid") # Set chart values line.width = 0.45 axis.font.size = 2.9 # Generate some random data start.date <- as.Date("2011-07-01") x.month <-seq.Date(start.date, by = "month", length.out = 24) end.date <- max(x.month) period.a <- rnorm(12, mean=50, sd=2) period.b <- rnorm(12, mean=55, sd=2) x.value <- c(period.a
  • 使用R和ggplot2绘制金字塔图(drawing pyramid plot using R and ggplot2)
    问题 我需要绘制一个金字塔图,就像所附的一样。 我从这里找到了一个使用R(而不是ggplot)的示例,有人可以给我一些使用ggplot进行此操作的提示吗? 谢谢! 回答1 这本质上是一个背对背条形图,类似于在优秀的学习者博客中使用ggplot2生成的条形图:http://learnr.wordpress.com/2009/09/24/ggplot2-back-to-back-bar-图表/ 您可以对其中一个图使用coord_flip ,但是我不确定如何像上面一样在两个图之间共享y轴标签。 下面的代码应该使您足够接近原始代码: 首先创建一个数据样本数据框,将“年龄”列转换为具有所需断点的因子: require(ggplot2) df <- data.frame(Type = sample(c('Male', 'Female', 'Female'), 1000, replace=TRUE), Age = sample(18:60, 1000, replace=TRUE)) AgesFactor <- ordered( cut(df$Age, breaks = c(18,seq(20,60,5)), include.lowest = TRUE)) df$Age <- AgesFactor 现在开始构建图:使用数据的相应子集创建公图和母图,隐藏图例等。 gg <- ggplot(data
  • 在 ggplot2 和 facet_wrap 中,如何删除所有边距和填充但保留 strip.text?(In ggplot2 and facet_wrap, how to remove all margins and padding yet keep strip.text?)
    问题 这可能主要是因为我误解了panel.margin = unit(...)在theme()函数中的工作方式......但我无法按照我想要的方式自定义 facet_wrap 中的边距。 基本上,我想要一个看起来像这样的 facet_grid,在每个方面插入方面文本(即strip.text )并且每个方面之间没有间隔: (我在粉红色边框中留下了每个面的尺寸) 所以这是到目前为止的代码。 要设置数据和绘图: library(ggplot2) library(grid) p <- ggplot() + geom_bar(data = mtcars, aes(x = cyl, y = qsec), stat = 'identity') + facet_wrap( ~ carb, ncol = 3) mytheme <- theme_minimal() + theme( axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title = element_blank(), panel.margin = unit(0, "lines"), panel.border = element_rect(colour = rgb(1.0, 0, 0, 0.5)
  • ggplot2 图,从某个点开始的刻度轴(ggplot2 graph, scale axis from a certain point on)
    问题 我如何使用ggplot2从某个点开始缩放轴。 假设我们有一个从 0 到 100 的范围,大多数值在 1 到 10 的范围内,一个值是 100。 require('data.table') require('ggplot2') test <- data.table(x=1:10,y=c(seq(1,9),100)) ggplot(test, aes(x=x,y=y)) + geom_point(size=5) 我想创建一个 y 尺度从1 to 10 by 1再by 10的图形,这样图中值 9 和 100 之间的空间就会“变小”。 更新: eipi10 的方式非常适合我想要实现的目标。 还有一个我正在努力解决的细节。 我如何摆脱第二个图例并在最终情节中保持正确的比例? 和情节的代码: test <- data.table(x=1:10,y=c(seq(1,9),100)) p1 = ggplot(test, aes(x=x,y=y,color=x)) + geom_point(size=5) + scale_x_continuous(limits=c(0,10)) + coord_cartesian(ylim=c(-0.1,10)) + scale_y_continuous(breaks=0:10) + theme(plot.margin=unit(c(0,0.5,0,0)
  • 如何在ggplot2中的绘图区域之外绘制线条?(How to draw lines outside of plot area in ggplot2?)
    问题 我用ggplot2创建了这个图: 外部线需要与Y比例尺相对应(即,Text1的线的Y位置应为100和85)。 我可以做到的唯一方法是在图的右侧绘制一个与条形图相同比例的空白图,然后使用注释功能绘制线条。 另一种方法是简单的“手动”绘制线条grid.lines ,但是的坐标grid.lines将不对应于情节的Y规模。 是否有可能以其他方式画出这些线? 我认为必须使用grid.lines完成。 如何将条形图的Y坐标传递给grid.lines ? 以下是用于创建该图形的最少代码: library (ggplot2) test= data.frame( group=c(rep(1,6), rep(2,6)), subgroup=c( 1,1,1,2,2,2,1,1,1,2,2,2), category=c( rep(1:3, 4)), count=c( 10,80,10,5,90,5, 10,80,10,5,90,5 ) ) qplot(subgroup, count, data=test, geom="bar", stat="identity", fill =category, facets = .~ group, width=0.9)+ opts(legend.position="none", plot.margin = unit(c(0,9,2,0), "lines"))
  • ggplot2中具有共享轴的两个水平条形图(类似于人口金字塔)(Two horizontal bar charts with shared axis in ggplot2 (similar to population pyramid))
    问题 我想在一个类似于人口金字塔的绘图上绘制两个变量,如下所示: 由于我将在下面列出原因,该图几乎存在,但并不完全。 我使用以下代码制作了该图: DATA <- data.frame( state = c("AK", "TX", "CA", "MT", "NM", "AZ", "NV", "CO", "OR", "WY", "MI", "MN", "UT", "ID", "KS", "NE", "SD", "WA", "ND", "OK"), sales_staff = c(20,30,40,10,15,35,18,25,22,7,12,22,3,4,5,8,14,28,24,32) ) set.seed(1) DATA$sales <- DATA$sales_staff * 50 + (runif(nrow(DATA)) * 1000) # Order the state factor by number of sales staff so that it is plotted in that order DATA$state <- factor(DATA$state, levels = DATA[order(DATA$sales_staff),"state"]) 我想背对背“粘合”两个图,所以我从http://www.cookbook-r.com/Graphs/Multiple
  • 如何对齐多个ggplot2图并在所有图上添加阴影(How to align multiple ggplot2 plots and add shadows over all of them)
    问题 请在此处下载数据! 目标:绘制像这样的图像: 特点: 1.两个不同的时间序列; 2.下面板的y轴反向。 3.在两个地块上的阴影。 可能的解决方案: 1.切面不合适-(1)不能仅使一个切面的y轴反转,而保持其他切面不变。 (2)难以一一调整各个方面。 2.使用视口,使用以下代码来排列各个图: library(ggplot2) library(grid) library(gridExtra) ##Import data df<- read.csv("D:\\R\\SF_Question.csv") ##Draw individual plots #the lower panel p1<- ggplot(df, aes(TIME1, VARIABLE1)) + geom_line() + scale_y_reverse() + labs(x="AGE") + scale_x_continuous(breaks = seq(1000,2000,200), limits = c(1000,2000)) #the upper panel p2<- ggplot(df, aes(TIME2, V2)) + geom_line() + labs(x=NULL) + scale_x_continuous(breaks = seq(1000,2000,200), limits = c(1000
  • R, ggplot - 图形共享相同的 y 轴但具有不同的 x 轴比例(R, ggplot - Graphs sharing the same y-axis but with different x-axis scales)
    问题 语境 我有一些数据集/变量,我想绘制它们,但我想以紧凑的方式进行。 为此,我希望它们共享相同的 y 轴但不同的 x 轴,并且由于分布不同,我希望 x 轴之一对数缩放,另一个线性缩放。 例子 假设我有一个长尾变量(我希望在绘制时对 x 轴进行对数缩放): library(PtProcess) library(ggplot2) set.seed(1) lambda <- 1.5 a <- 1 pareto <- rpareto(1000,lambda=lambda,a=a) x_pareto <- seq(from=min(pareto),to=max(pareto),length=1000) y_pareto <- 1-ppareto(x_pareto,lambda,a) df1 <- data.frame(x=x_pareto,cdf=y_pareto) ggplot(df1,aes(x=x,y=cdf)) + geom_line() + scale_x_log10() 和一个正常的变量: set.seed(1) mean <- 3 norm <- rnorm(1000,mean=mean) x_norm <- seq(from=min(norm),to=max(norm),length=1000) y_norm <- pnorm(x_norm,mean=mean) df2
  • ggplot2中具有边际直方图的散点图(Scatterplot with marginal histograms in ggplot2)
    问题 是否有一种方法可以像下面的ggplot2中的示例一样使用边际直方图创建散点图? 在Matlab中,它是scatterhist()函数,并且也存在R的等效项。 但是,我还没有在ggplot2上看到它。 我通过创建单个图形开始尝试,但是不知道如何正确排列它们。 require(ggplot2) x<-rnorm(300) y<-rt(300,df=2) xy<-data.frame(x,y) xhist <- qplot(x, geom="histogram") + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 5/16, axis.text.y = theme_blank(), axis.title.y=theme_blank(), background.colour="white") yhist <- qplot(y, geom="histogram") + coord_flip() + opts(background.fill = "white", background.color ="black") yhist <-
  • 在y轴上增加文字和标题之间的距离(Increase distance between text and title on the y-axis)
    问题 y轴标题看起来太靠近轴文本。 ggplot(mpg, aes(cty, hwy)) + geom_point() 我尝试使用theme()更改许多参数的值,但似乎无济于事。 回答1 从ggplot2 2.0.0您可以使用element_text()的margin =参数来更改轴标题和数字之间的距离。 设置的值margin上t运算, r飞行, b ottom,和l元件的EFT侧。 ggplot(mpg, aes(cty, hwy)) + geom_point()+ theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0))) margin也可以用于其他element_text元素(请参见?theme ),例如axis.text.x , axis.text.y和title 。 添加 为了在轴具有不同位置时(例如,使用scale_x_...(position = "top")设置轴标题的边距,您需要使用不同的主题设置-例如axis.title.x.top 。参见https://github.com/tidyverse/ggplot2/issues/4343。 回答2 根据此论坛帖子:https://groups.google.com/forum/#!topic/ggplot2
  • 避免 ggplot2 部分剪切轴文本(avoid ggplot2 to partially cut axis text)
    问题 我正在尝试生成一个水平图,在轴上标记有刻度。 df = data.frame(quality = c("low", "medium", "high", "perfect"), n = c(0.1, 11, 0.32, 87.45)) require(ggplot2) require(dplyr) size = 20 df %>% ggplot() + geom_bar(aes(x = quality, y = n), stat = "identity", fill = "gray70", position = "dodge") + geom_text(aes(x = quality, y = n, label = paste0(round(n, 2), "%")), position = position_dodge(width = 0.9), hjust = -0.2, size = 10, color = "gray50") + coord_flip() + ggtitle("") + xlab("gps_quality\n") + #scale_x_continuous(limits = c(0, 101)) + theme_classic() + theme(axis.title = element_text(size = size, color = "gray70"
  • ggplot2 极坐标轴标签位置(ggplot2 polar plot axis label location)
    问题 这只是一个老问题 ggplot2 polar plot arrows 的扩展 您会发现 x 轴在 most_out 圆之外。 在ggplot2中,我使用“panel.grid.major = theme_line(colour = "black", size = 0.2, linetype=2)”得到虚线圆圈,如下图: 所以我的问题是如何使轴标签(180, 135, 90, .....)在圆外,因为文本与圆线合并。 我尝试使用“hjust”或“vjust”来调整文本和轴之间的距离。 但它不起作用。 那么你对这个问题有什么想法吗? 先谢谢了!!!! 回答1 您尚未提供重现问题的代码,因此这只是一个猜测。 我过去曾使用空格,特别是\n来将文本“移开”。 也许自定义格式化程序可以在这里工作。 以下是编写自定义刻度线标签格式化程序的方法。 如果失败,您始终可以隐藏轴标签并通过添加另一个图层使用geom_text自己绘制它们。 希望这可以帮助。 顺便说一下,@hadley 关于 ggplot2 的书非常好。 回答2 我在尝试自己解决类似问题时遇到了这个问题。 这篇文章的答案几乎涵盖了一种解决方法:在极坐标图的边缘移除额外空间和环 您必须调整 x 比例的限制以匹配您的轴标签。 您还必须创建一个与箭头径向长度相对应的新比例尺(绘图左侧的 0-300 比例尺),因为 axis.text =
  • 使用grid和ggplot2使用R创建连接图(using grid and ggplot2 to create join plots using R)
    问题 我想知道该怎么做才能修复网格图。 这些图以阵列形式排列,以使一行中的所有图具有相同的Y轴变量,而一列中的所有图具有相同的X轴变量。 当在网格中连接在一起时,将创建多图。 我禁用大多数图上的标签,但外面的标签除外,因为内部的标签具有相同的变量和比例。 但是,由于外部图具有标签和轴值,因此它们导致的尺寸与其他图不同。 我当时正在考虑为变量名和轴范围值向网格中再添加2列和行...然后仅在相应的网格空间上绘制变量名称,在另一个网格空间上绘制轴值,因此仅绘制指向剩余空间并获得相等的大小。 编辑1:感谢rcs将我指向align.plot 编辑align.plot以接受空值(用于不需要轴上的标题/文本时) 现在我离目标越来越近了,但是由于标签的原因,第一个columun图的宽度仍然小于其余的宽度。 示例代码: grid_test <- function () { dsmall <- diamonds[sample(nrow(diamonds), 100), ] #-----/align function----- align.plots <- function(gl, ...){ # Obtained from http://groups.google.com/group/ggplot2/browse_thread/thread/1b859d6b4b441c90 # Adopted
  • R中具有alpha透明直方图的散点图(scatterplot with alpha transparent histograms in R)
    问题 像这样的图,如何在R中绘制具有透明的无比例尺直方图的散点图? 看起来它不是在ggplot2中制作的。 有谁知道使用什么命令? 回答1 library(ggplot2) library(gridExtra) set.seed(42) DF <- data.frame(x=rnorm(100,mean=c(1,5)),y=rlnorm(100,meanlog=c(8,6)),group=1:2) p1 <- ggplot(DF,aes(x=x,y=y,colour=factor(group))) + geom_point() + scale_x_continuous(expand=c(0.02,0)) + scale_y_continuous(expand=c(0.02,0)) + theme_bw() + theme(legend.position="none",plot.margin=unit(c(0,0,0,0),"points")) theme0 <- function(...) theme( legend.position = "none", panel.background = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel
  • 没有轴或网格的ggplot2主题(ggplot2 theme with no axes or grid)
    问题 我正在尝试绘制除数据外没有任何信息的图。 没有轴; 没有网格; 无题; 只是情节。 但是我不断获得无法删除的多余边距和填充。 library(ggplot2) library(grid) theme_bare <- theme( axis.line = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank(), #axis.ticks.length = unit(0, "lines"), # Error axis.ticks.margin = unit(c(0,0,0,0), "lines"), legend.position = "none", panel.background = element_rect(fill = "gray"), panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.margin = unit(c(0,0
  • ggplot2 使用 facet 时在面板边框外(ggplot2 outside panel border when using facet)
    问题 我想在我的多面图的外部周围有一个边框,但没有将图内的面板分隔开的线条。 问题是 panel.border 在构面中的每个面板周围绘制一个边框,而没有选择只在整个图周围设置边框。 或者,您可以将内部分隔线设置为“白色”,但将外部边框设置为“黑色”。 这是我的代码: mtcars mtcars$manufacturer=rownames(mtcars) ggplot(mtcars, aes(x=manufacturer, y=mpg,fill=factor(gear,levels=c("3","4","5"))))+ geom_bar(stat="identity",position="dodge",colour="black")+ facet_grid(~cyl,scales = "free_x",space = "free_x",) + theme(axis.text.x = element_text(angle = 45,size=12,colour="Black",vjust=1,hjust=1), strip.background = element_blank(), strip.placement = "inside", strip.text = element_text(size=15), legend.position=c(0.9,0.8), legend