我不完全确定你想详细实现什么,但这是我的 2 美分。您可以使用以下代码:
您的第一个问题是这NbCel
是一个因素,而不是数字。您可以轻松地在图表的 Y 轴上看到它。
# convert NbCel from factor to integer
Data$NbCel <- as.integer(as.character(Data$NbCel))
解决了这个问题,我们使用图表本身。
X 轴是“日期”信息和“分支”的混合体。也许最好使用facet_wrap
.
# use a facet-wrap (separate plots in one graph)
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") +
geom_text(aes(label=NbCel, group = Embranchement), vjust=-.5, color="black",
position = position_dodge(width = 10), size=2.5) +
theme(axis.text.x = element_text(angle = 60, hjust = 1, size = 6)) # make X labels readible
请让我知道这是否是您想要的。
添加
同样,您想在 X 轴上组合来自“分支”和不同“日期”的不同条形。在这种情况下,更自然的做法可能是使用折线图,这样您就可以在 1 个日期上叠加有关不同数据点的频率信息。
您的数据集不完整,即并非每个日期都包含所有“分支”。
# indicates measurement not available on every date, hence no lines
with(Data, table(Embranchement, Date))
Embranchement 2017-06-26 2017-07-14 2017-09-14
BACILLARIOPHYTA 0 1 0
CHLOROPHYTA 1 1 1
CYANOBACTERIA 1 1 1
HAPTOPHYTA 0 1 0
HETEROKONTOPHYTA 0 1 0
INDETERMINES 1 0 0
假设缺少读数是空读数,我填充了数据集,产生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)
)
现在我们可以创建一个折线图:
ggplot(data=Data2, aes(x=Date, y=NbCel, col=Embranchement, linetype =Embranchement) ) +
geom_line( size=1.1 ) +
scale_fill_brewer(palette="Paired") +
geom_text(aes(label=NbCel), vjust=-.75, color="black", size=2.5)
产生下图,X 轴上带有“日期”,每个“分支”有一条线。
即使这不是你想要的,我希望它对你有所帮助。
补充2(方面的回顾,但更好)
(这个答案需要编辑,稍后;-)
尝试使用此代码在构面中的条上获取干净的数字。最重要的变化在于geom_text
:position_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))
你会得到这个图表:
我认为这更接近你想要的。让我知道。