如何更改x轴限制ggplot2 r [英] how to change x-axis limits ggplot2 r

查看:380
本文介绍了如何更改x轴限制ggplot2 r的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用ggplot条形图来设置x轴的限制。整个情节是好的,但是当我使用ylim(1,6)(这些是我需要的限制)时,这些条消失了。



数据:

$ (c(1:13))
var.B <-c(4.351833,c(1:13))b
$ b

  var.A < -  as.numeric (var.A,var.B)
的数据(例如,如图2所示) code>

Ggplot代码:

  ggplot(df,aes(x = factor(var.A),y = var.B))+ 
geom_bar(position = position_dodge(),stat =identity,fill =#fff68f,color = darkgrey,width = 0.4)+
coord_flip()+
xlab()+
ylab()+
scale_x_discrete(labels = c(aaaaaaa aaaaa ,bbbbb bbb bbbb,cccc ccc,dddd dd ddddd,
eee e eeeee e ee,ffffffff,gggggggg,hhhhhhh,iiii,
)jjjjjj,kkkkkkk,llllll,mmmmmmmm))

添加: ylim(1,6)+ 的东西出错了。

还有一件事。每个栏的颜色设置为 fill =#fff68f。是否有任何解决方案来改变一个栏的颜色,例如,我希望不同的顶部第一个,即#ee2c2c


因为您使用 coord_flip(),您可以用 scale_y_continuous(expand = c(0,0),limits = c(1,6),oob = rescale_none)
并为每个可以使用的小节设置颜色 scale_fill_manual values = c(#ee2c2c,...)



因此,如果您想手动设置条的颜色,首先需要创建名称向量并将其插入到数据框中:

  names<  -  c(aaaaaaa aaaaa, bbbbb bbb bbbb,cccc ccc,dddd dd ddddd,
eee e eeeee e ee,ffffffff,gggggggg,hhhhhhh,iiii,
jjjjjj ,kkkkkkk,llllll,mmmmmmmm)

var.A< - as.numeric(c(1:13))
var.B< - c (4.351833,2.938000,4.726465,3.747162,3.720737,4.297117,4.304500,4.061277,4.595236,4.105444,3.701684,3.523563,4.1700 00)
df< - data.frame(var.A,var.B,names)

为了在ggplot中定义变量名称和颜色,您需要将矢量的结构从字符更改为因子(以获得级别)。



  var.names = factor(df $ names,
levels = c(aaaaaaa aaaaa,bbbbb bbb bbbb, cccc ccc,dddd dd ddddd,eee e eeeee e ee,ffffffff,gggggggg,hhhhhhh,iiii,jjjjjj,kkkkkkk,llllll,mmmmmmmm ),ordered = T)

所以你的代码如下所示:

  ggplot(df,aes(x = var.names,y = var.B,fill = as.factor(var.names)))+ 
geom_bar(position = position_dodge(),stat =identity,width = 0.4)+
coord_flip()+
scale_y_continuous(expand = c(0,0),limits = c(1,6 ),oob = rescale_none)+
xlab()+
ylab()+
scale_fill_manual(values = c(c(rep(#fff68f,12)), #ee2c2c))

输出结果为


I would like to set limit for x-axis using ggplot bar plot. The whole plot is ok, but when I use ylim(1,6) (these are limits what I need) the bars disappear.

Data:

var.A <- as.numeric(c(1:13))
var.B <- c(4.351833, 2.938000, 4.726465, 3.747162, 3.720737, 4.297117, 4.304500, 4.061277, 4.595236, 4.105444, 3.701684, 3.523563, 4.170000)
df <- data.frame(var.A,var.B)

Ggplot code:

    ggplot(df, aes(x=factor(var.A), y=var.B)) + 
  geom_bar(position=position_dodge(), stat="identity", fill="#fff68f", colour="darkgrey", width = 0.4) +
  coord_flip()+
  xlab("") +
  ylab("") +
  scale_x_discrete(labels=c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd",
                            "eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii",
                            "jjjjjj","kkkkkkk","llllll","mmmmmmmm"))

And when I add: ylim(1,6) + things are going wrong.

And another thing. The color of every bar is set as fill="#fff68f". Is there any solution to change color of one bar, for example the first from top I'd like to be different, i.e. #ee2c2c.

解决方案

Because you used coord_flip() you can set limits of x-axis with scale_y_continuous(expand=c(0,0),limits=c(1,6),oob = rescale_none) and for setting colors for every bar you can use scale_fill_manual(values = c("#ee2c2c",...).

So if you would like to set the color of bars manually, you first need to create vector of names and insert it in your dataframe:

names <- c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd",
"eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii",
"jjjjjj","kkkkkkk","llllll","mmmmmmmm")

var.A <- as.numeric(c(1:13))
var.B <- c(4.351833, 2.938000, 4.726465, 3.747162, 3.720737, 4.297117, 4.304500, 4.061277, 4.595236, 4.105444, 3.701684, 3.523563, 4.170000)
df <- data.frame(var.A,var.B,names)

And to order variable names and colors in ggplot you need to change the structure of vector from character to factor (in order to get levels).

var.names = factor(df$names,
                levels = c("aaaaaaa aaaaa","bbbbb bbb bbbb","cccc ccc","dddd dd ddddd", "eee e eeeee e ee","ffffffff","gggggggg","hhhhhhh","iiii", "jjjjjj","kkkkkkk","llllll","mmmmmmmm"), ordered=T)

So your code then looks like:

ggplot(df, aes(x=var.names, y=var.B, fill=as.factor(var.names))) + 
  geom_bar(position=position_dodge(), stat="identity", width = 0.4) +
  coord_flip()+
  scale_y_continuous(expand=c(0,0),limits=c(1,6),oob = rescale_none) +
  xlab("") +
  ylab("") +
  scale_fill_manual(values = c(c(rep("#fff68f",12)),"#ee2c2c"))

And output is

这篇关于如何更改x轴限制ggplot2 r的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆