在 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 轴标签。理想情况下,该函数将 "decide" 基于数据长度的中断。例如,在这种情况下,我只需要年份(MESANIO 列是 yearmon zoo 对象)。
我已经尝试添加 scale_x_discrete() 但即使我手动设置通用中断也没有任何显示。我猜这是由于刻面造成的,但不确定。
您可以尝试使用 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")
...
除非你有很好的理由使用 factor
将 class yearmon
的 x 值转换为离散比例,否则我认为你应该保持原样并使用 zoo::scale_x_yearmon
:
library(zoo)
ggplot(data, aes(x = MESANIO, y = Clientes) +
geom_bar(stat = "identity")+
facet_grid(MesesRegistrado ~ .) +
scale_x_yearmon()
您可以使用 n
、breaks
和 format
参数进一步微调外观。
我有这个 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 轴标签。理想情况下,该函数将 "decide" 基于数据长度的中断。例如,在这种情况下,我只需要年份(MESANIO 列是 yearmon zoo 对象)。
我已经尝试添加 scale_x_discrete() 但即使我手动设置通用中断也没有任何显示。我猜这是由于刻面造成的,但不确定。
您可以尝试使用 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")
...
除非你有很好的理由使用 factor
将 class yearmon
的 x 值转换为离散比例,否则我认为你应该保持原样并使用 zoo::scale_x_yearmon
:
library(zoo)
ggplot(data, aes(x = MESANIO, y = Clientes) +
geom_bar(stat = "identity")+
facet_grid(MesesRegistrado ~ .) +
scale_x_yearmon()
您可以使用 n
、breaks
和 format
参数进一步微调外观。