首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用因子变量更改ggplot图表的背景色

用因子变量更改ggplot图表的背景色
EN

Stack Overflow用户
提问于 2015-07-13 10:34:29
回答 1查看 14.5K关注 0票数 5

我在R中使用ggplot来绘制一些数据。我要做的是绘制一个散点图,其中的背景在图表的不同区域是不同的。有一个非常有帮助的答案,here,是让我大部分的方式,但不是所有的方式。

以下是数据的示例

代码语言:javascript
运行
复制
row.names selectionDirector country     Totals    director.rank
1   268   Alfred Hitchcock  Argentina   14        1
2   269   Alfred Hitchcock  Australia   7         3
3   274   Alfred Hitchcock  Canada      10        1
4   286   Alfred Hitchcock  France      18        1
5   288   Alfred Hitchcock  Germany     9         6
6   296   Alfred Hitchcock  Italy       5         3
7   319   Alfred Hitchcock  Spain       21        4
8   320   Alfred Hitchcock  Sweden      4         8
9   325   Alfred Hitchcock  UK          87        1
10  330   Alfred Hitchcock  US          87        1
11  346   Andrei Tarkovsky  Argentina   4         20
12  347   Andrei Tarkovsky  Australia   2         34
13  355   Andrei Tarkovsky  Canada      2         32
14  365   Andrei Tarkovsky  France      2         37

我的代码是:

代码语言:javascript
运行
复制
rects <- data.frame(xstart = seq(-0.5,8.5,1), xend = seq(0.5,9.5,1), col = letters[1:10])

ggplot() +
  geom_rect(data=rects,aes(ymin=0,ymax=80,xmin=xstart,xmax=xend,fill=col)) +
  geom_point(data=top.votes.by.director.country, aes(x=country, y=director.rank)) +
  coord_flip() +
  facet_wrap(~selectionDirector)

国家是一个有10个价值的因素。director.rank是数字的。它们都来自于数据框架top.votes.by.director.country。这样做的目的是为每个国家的水平区域设置一个不同的背景,这样可以使我在学习时更容易阅读。

想象一下上面的图片,除了彩色点之外,每个国家的黑点后面都会有一条彩色的带子。我能在网上找到的最接近的近似是从上面链接的答案中摘取的下面的图表:

因此,在分面图中,每个国家都有一个彩色背景,就像上面的图表对每个区域都有一个彩色背景一样。

问题是,当我运行上面的代码时,我会得到以下错误。

误差:离散值提供给连续标度

当我移除geom_rect部分时,它可以正常工作。如果我将geom_rect移动到facet_wrap上方,我就会得到一个图表,尽管它被搞砸了。如果我只做了geom_rect部分,我得到了我想要的背景。

我已经弄了几个小时了,不能让它起作用了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-13 16:44:41

错误发生了,你试着把离散的值绘制成连续的尺度。在您的例子中,您在x中将"country“绘制为"-0.5~9.5”,您可以更改您的绘图顺序。

我使用"Alfred“selectionDirector按以下代码绘制

代码语言:javascript
运行
复制
rects <- data.frame(xstart = seq(0.5,9.5,1), xend = seq(1.5,10.5,1), 
         col = letters[1:10])
ggplot() + geom_point(data=top.votes.by.director.country, 
                      aes(x=country, y=director.rank)) +
           geom_rect(data=rects, aes(ymin=0, ymax=80, xmin=xstart,
                      xmax=xend, fill=col), alpha =0.5) + coord_flip()

结果如下所示。

注意:我将rect的x移动为“1”(从0.5开始,而不是在-0.5),并将alpha属性添加到rect中。

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

https://stackoverflow.com/questions/31381053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档