繁体   English   中英

改变ggplot2中的离散x动物园规模

[英]change discrete x zoo scale in ggplot2

我有这个data.frame:

data<-structure(list(MESANIO = structure(c(2008.25, 2008.41666666667, 
2008.58333333333, 2008.66666666667, 2008.75, 2008.83333333333, 
2008.91666666667, 2009, 2009.08333333333, 2009.16666666667, 2009.25, 
2009.33333333333, 2009.41666666667, 2009.5, 2009.58333333333, 
2009.66666666667, 2009.75, 2009.83333333333, 2009.91666666667, 
2010, 2010.08333333333, 2010.16666666667, 2010.25, 2010.33333333333, 
2010.41666666667, 2010.5, 2010.58333333333, 2010.66666666667, 
2010.75, 2010.83333333333, 2010.91666666667, 2011, 2011.08333333333, 
2011.16666666667, 2011.25, 2011.33333333333, 2011.41666666667, 
2011.5, 2011.58333333333, 2011.66666666667, 2011.75, 2011.83333333333, 
2011.91666666667, 2012, 2012.08333333333, 2012.16666666667, 2012.25, 
2012.33333333333, 2012.41666666667, 2012.5, 2012.58333333333, 
2012.66666666667, 2012.75, 2012.83333333333, 2012.91666666667, 
2013, 2013.08333333333, 2013.16666666667, 2013.25, 2013.33333333333, 
2013.41666666667, 2013.5, 2013.5, 2013.58333333333, 2013.58333333333, 
2013.66666666667, 2013.66666666667, 2013.75, 2013.75, 2013.83333333333, 
2013.83333333333, 2013.91666666667, 2013.91666666667, 2014, 2014, 
2014.08333333333, 2014.08333333333, 2014.16666666667, 2014.16666666667, 
2014.25, 2014.25, 2014.33333333333, 2014.33333333333, 2014.41666666667, 
2014.41666666667, 2014.5, 2014.5, 2014.5, 2014.58333333333, 2014.58333333333, 
2014.58333333333, 2014.66666666667, 2014.66666666667, 2014.66666666667, 
2014.75, 2014.75, 2014.75, 2014.83333333333, 2014.83333333333, 
2014.83333333333, 2014.91666666667, 2014.91666666667, 2014.91666666667, 
2015, 2015, 2015, 2015, 2015.08333333333, 2015.08333333333, 2015.08333333333, 
2015.08333333333, 2015.16666666667, 2015.16666666667, 2015.16666666667, 
2015.16666666667, 2015.25, 2015.25, 2015.25, 2015.25, 2015.33333333333, 
2015.33333333333, 2015.33333333333, 2015.33333333333, 2015.41666666667, 
2015.41666666667, 2015.41666666667, 2015.41666666667, 2015.5, 
2015.5, 2015.5, 2015.5), class = "yearmon"), MesesRegistrado = c("4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"4. Más de 24", "4. Más de 24", "4. Más de 24", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"3. Más de 12", "4. Más de 24", "3. Más de 12", "4. Más de 24", 
"2. Más de 6", "3. Más de 12", "4. Más de 24", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "2. Más de 6", "3. Más de 12", 
"4. Más de 24", "2. Más de 6", "3. Más de 12", "4. Más de 24", 
"2. Más de 6", "3. Más de 12", "4. Más de 24", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24", "1. Menos de 6", "2. Más de 6", 
"3. Más de 12", "4. Más de 24"), Clientes = c(1L, 1L, 1L, 3L, 
110L, 238L, 270L, 300L, 309L, 321L, 295L, 345L, 373L, 376L, 409L, 
449L, 485L, 480L, 518L, 595L, 604L, 659L, 639L, 722L, 698L, 750L, 
775L, 802L, 868L, 894L, 974L, 1002L, 971L, 1060L, 1037L, 1047L, 
1089L, 1112L, 1155L, 1182L, 1226L, 1292L, 1375L, 1374L, 1416L, 
1457L, 1445L, 1451L, 1407L, 1467L, 1533L, 1574L, 1607L, 1595L, 
1716L, 1767L, 1719L, 1781L, 1807L, 1830L, 1822L, 17L, 1907L, 
82L, 1880L, 128L, 1912L, 173L, 1891L, 219L, 1888L, 280L, 1964L, 
337L, 1965L, 369L, 1946L, 421L, 1938L, 487L, 1945L, 556L, 1946L, 
641L, 1942L, 26L, 662L, 1948L, 117L, 598L, 1945L, 190L, 652L, 
1960L, 255L, 632L, 2023L, 321L, 627L, 2056L, 422L, 642L, 2099L, 
57L, 451L, 660L, 2139L, 182L, 410L, 647L, 2101L, 292L, 421L, 
675L, 2175L, 752L, 428L, 654L, 2172L, 995L, 435L, 690L, 2265L, 
1756L, 456L, 697L, 2285L, 2693L, 462L, 705L, 2382L)), .Names = c("MESANIO", 
"MesesRegistrado", "Clientes"), row.names = c(NA, -131L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), vars = list("MESANIO"), drop = TRUE)

使用此数据,我使用ggplot()产生以下内容:

g_evtrafico<-ggplot(data, 
                    aes(x = as.factor(MESANIO), 
                        y = Clientes,
                        group = 1))+
  geom_bar(stat = "identity")+
  facet_grid(MesesRegistrado ~ .)+
  stat_smooth(method="lm", se=FALSE)+
  labs(title = "Flujo de Clientes", x = "Fecha", y = "Clientes")

输出如下:

在此处输入图片说明

我试图消除(以编程方式,因为这是在rmarkdown文档中进行的)x轴标签,这些标签会干扰图形的正确读取。 理想情况下,该函数将根据数据长度“确定”中断。 例如,在这种情况下,我只需要年份(MESANIO列是Yearmon动物园对象)。

我尝试添加scale_x_discrete(),但是即使手动放置了通用中断,也不会显示任何内容。 我猜这是由于方面造成的,但不确定。

除非您有充分的理由使用factoryearmon类的x值转换为离散比例,否则我认为您应保持原样并使用zoo::scale_x_yearmon

library(zoo)
ggplot(data, aes(x = MESANIO, y = Clientes) +
  geom_bar(stat = "identity")+
  facet_grid(MesesRegistrado ~ .) +
  scale_x_yearmon()

在此处输入图片说明

您可以使用nbreaksformat参数来进一步调整外观。

您可以尝试使用scales包中的pretty_breaks函数:

...
g_evtrafico <- ggplot(data, aes(x = as.factor(MESANIO), y = Clientes, group = 1)) +
  geom_bar(stat = "identity") +
  scale_x_discrete(breaks=pretty_breaks(n=10)) +
  facet_grid(MesesRegistrado ~ .) +
  stat_smooth(method="lm", se=FALSE) +
  labs(title = "Flujo de Clientes", x = "Fecha", y = "Clientes")
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM