R geom_文本,带有带xaxis日期的减淡条形图
我尝试在减淡条形图上添加位置geom_文本,但在ggplot中不适用xaxis日期:R geom_文本,带有带xaxis日期的减淡条形图,r,date,bar-chart,geom-text,R,Date,Bar Chart,Geom Text,我尝试在减淡条形图上添加位置geom_文本,但在ggplot中不适用xaxis日期: Data<-as.data.frame( cbind( as.POSIXct(c("2017-06-26", "2017-06-26" ,"2017-06-26" ,"2017-07-14", "2017-07-14", "2017-07-14", "2017-07-14" ,"2017-07-14", "2017-09-14", "2017-09-14")
Data<-as.data.frame(
cbind(
as.POSIXct(c("2017-06-26", "2017-06-26" ,"2017-06-26" ,"2017-07-14", "2017-07-14",
"2017-07-14", "2017-07-14" ,"2017-07-14", "2017-09-14", "2017-09-14"),origin = "1970-01-01", tz = "GMT"),
c("CHLOROPHYTA","CYANOBACTERIA","INDETERMINES","BACILLARIOPHYTA","CHLOROPHYTA", "CYANOBACTERIA" ,
"HAPTOPHYTA","HETEROKONTOPHYTA","CHLOROPHYTA","CYANOBACTERIA" ),
c(29,8637,3233,97,2816, 63721,282, 18,2001,76593)))
colnames(Data)<-c("Date","Embranchement","NbCel")
Data$Date<-as.POSIXct(as.numeric(as.character(Data$Date)), origin = "1970-01-01", tz = "GMT")
my_plot<-
ggplot(data=Data, aes(x=Date, y=NbCel, fill=Embranchement,width=1150000)) +
geom_bar(position = "dodge", stat="identity")+
geom_text(aes(label=NbCel), vjust=1.6, color="black",
position = position_dodge(0.9), size=3.5)+
scale_x_discrete(labels = Data$Date) +
scale_fill_brewer(palette="Paired")#+
#axis(1,at=Data$Date,labels = Data$Date)
print(my_plot)
Data我不能完全确定您想要实现的具体目标,但这是我的2美分。您可以使用以下代码:
您的第一个问题是NbCel
是一个因子,不是数字。在图形的Y轴上可以很容易地看到这一点
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
请让我知道这是否是你想要的
附加
同样,您希望在X轴上组合来自“分支”和不同“日期”的不同条。在这种情况下,更自然的做法可能是使用折线图,这样您就可以在一个日期上叠加有关不同数据点的频率信息
您的数据集不完整,即并非每个日期都包含所有“分支”
假设缺少的读数为空读数,我填充了数据集,产生了Data2
:
Data2 <- rbind(Data,
data.frame(Date = as.Date("2017-06-26", format="%Y-%m-%d"), Embranchement = "BACILLARIOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-06-26", format="%Y-%m-%d"), Embranchement = "HAPTOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-06-26", format="%Y-%m-%d"), Embranchement = "HETEROKONTOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-07-14", format="%Y-%m-%d"), Embranchement = "INDETERMINES", NbCel = 0),
data.frame(Date = as.Date("2017-09-14", format="%Y-%m-%d"), Embranchement = "BACILLARIOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-09-14", format="%Y-%m-%d"), Embranchement = "HAPTOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-09-14", format="%Y-%m-%d"), Embranchement = "HETEROKONTOPHYTA", NbCel = 0),
data.frame(Date = as.Date("2017-09-14", format="%Y-%m-%d"), Embranchement = "INDETERMINES", NbCel = 0)
)
产生下图,X轴上有“日期”,每个“分支”有一条线
即使这不是你想要的,我希望它能帮助你
新增内容2(重述方面,但更好)
(此答案需要编辑,稍后;-)
尝试此代码以获得面中条上的清晰数字。
最重要的变化是geom\u text
:position\u dodge
ggplot(data=Data, aes(x=Embranchement, y=NbCel, fill=Embranchement)) +
geom_bar(position = position_dodge(), stat="identity")+
facet_wrap(~Date , ncol = 3) + ### plot per date
scale_fill_brewer(palette="Paired") +
theme_light() +
geom_text(aes(label=NbCel, group = Embranchement), vjust=-.5, color="black",
position = position_dodge(width = 1), size=2.5) +
theme(axis.text.x = element_text(angle = 60, hjust = 1, size = 6))
您将得到以下图表:
我认为这更接近你想要的。让我知道。您的第一个问题是NbCel是一个因子,而不是数值。在图形的Y轴上可以很容易地看到这一点
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
在垂直方向还是水平方向?在一些反射之后,我认为在每个条的顶部,对应的值是最好的。Thanks@YannG我在我的答案底部添加了一个更新的刻面图,请看。是的,我知道这个技巧,但我想将这个图与其他与时间相关的图进行比较。因此,具有相同的x轴比例。然而,在这个图中文本的位置是我想要的,但是在一个与日期相关的x轴上,就像在我发布的图中一样…如果可能的话。谢谢你的帮助!这种表示法的一些默认值是,它可以假设点之间的一些数据和数字不太清晰,因为它们可能由于相同顺序的值而堆叠(正如我们可以在X轴上的“日期”和每个“分支”图上的一条线中看到的)。这就是为什么我希望一个数据表示更可能是你和我的图形之间的混合。。。希望能做到。我已经将这种线表示方式视为y轴上有一个断点的替代方法,以便对较小的值具有更好的易读性。感谢这种数据表示图的升级方式。它非常清晰:-)。在缺乏x轴日期解决方案的情况下,正如我所希望的,我想我会采用这种绘图方式。谢谢你的帮助。我计划在这张图上加一个y轴打断。我将尝试在这篇评论中添加我的最终解决方案。很高兴我能提供帮助。祝你好运;-)@YannG:StackOverflow函数与投票。就像我对你的问题投了肯定的票(这增加了你的声誉),因为我相信这是一个精心设计和有趣的问题,你可以自由地对答案进行投票,或者通过投票(向上和向下箭头),或者选择它作为正确的答案,在投票按钮下面。有关更多信息,请参阅
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
ggplot(data=Data, aes(x=as.character(Date), y=NbCel)) +
geom_bar(aes(fill=Embranchement), position = position_dodge(), stat="identity") +
scale_fill_brewer(palette="Paired") +
geom_text(aes(label=NbCel, y = NbCel + 1200, group = Embranchement), color="black",
position = position_dodge(0.9), size=3.5)