r - scales=free does not react in ggplot with facets
问题描述
I am working on a lineplot with two facets. Here is the dataset:
to_plot <- structure(list(date = structure(c(12600, 12600, 12600, 12600,
12631, 12631, 12631, 12631, 12662, 12662, 12662, 12662, 12692,
12692, 12692, 12692, 12723, 12723, 12723, 12723, 12753, 12753,
12753, 12753, 12784, 12784, 12784, 12784, 12815, 12815, 12815,
12815, 12843, 12843, 12843, 12843, 12874, 12874, 12874, 12874,
12904, 12904, 12904, 12904, 12935, 12935, 12935, 12935, 12965,
12965, 12965, 12965, 12996, 12996, 12996, 12996, 13027, 13027,
13027, 13027, 13057, 13057, 13057, 13057, 13088, 13088, 13088,
13088, 13118, 13118, 13118, 13118, 16344, 16344, 16344, 16344,
16375, 16375, 16375, 16375, 16405, 16405, 16405, 16405, 16436,
16436, 16436, 16436, 16467, 16467, 16467, 16467, 16495, 16495,
16495, 16495, 16526, 16526, 16526, 16526, 16556, 16556, 16556,
16556, 16587, 16587, 16587, 16587, 16617, 16617, 16617, 16617,
16648, 16648, 16648, 16648, 16679, 16679, 16679, 16679, 16709,
16709, 16709, 16709, 16740, 16740, 16740, 16740, 16770, 16770,
16770, 16770, 16801, 16801, 16801, 16801, 16832, 16832, 16832,
16832, 16861, 16861, 16861, 16861, 16892, 16892, 16892, 16892,
16922, 16922, 16922, 16922, 16953, 16953, 16953, 16953, 16983,
16983, 16983, 16983, 17014, 17014, 17014, 17014, 17045, 17045,
17045, 17045, 17075, 17075, 17075, 17075, 17106, 17106, 17106,
17106, 17136, 17136, 17136, 17136, 17167, 17167, 17167, 17167,
17198, 17198, 17198, 17198, 17226, 17226, 17226, 17226, 17257,
17257, 17257, 17257, 17287, 17287, 17287, 17287, 17318, 17318,
17318, 17318, 17348, 17348, 17348, 17348, 17379, 17379, 17379,
17379, 17410, 17410, 17410, 17410, 17440, 17440, 17440, 17440
), class = "Date"), wave = c("Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV", "Pegida", "Hartz_IV", "Pegida", "Hartz_IV", "Pegida",
"Hartz_IV"), type = c("Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity", "Issue salience", "Issue salience", "Party popularity",
"Party popularity"), value = c(NA, 71.3381555153707, NA, 9.91085474567383,
NA, 78.1039755351682, NA, 11.2076455256299, NA, 73.9750445632799,
NA, 10.0549882168107, NA, 72.5748502994012, NA, 9.25831202046036,
NA, 71.8585622443016, NA, 8.41949778434269, NA, 68.7237866986219,
NA, 7.89902280130293, NA, 71.9364161849711, NA, 7.74731823599523,
NA, 79.7647058823529, NA, 5.15384615384615, NA, 87.2630331753554,
NA, 6.97674418604651, NA, 80.3149606299213, NA, 7.27708916433427,
NA, 79.9878345498783, NA, 9.35085007727975, NA, 78.6594529606252,
NA, 13.2875143184422, NA, 75.5769792579609, NA, 16.243847027641,
NA, 79.1672711446395, NA, 13.2208418320044, NA, 77.2151898734177,
NA, 10.7784431137725, NA, 70.7051032333463, NA, 9.9642431466031,
NA, 71.5869311551925, NA, 12.0183136207554, NA, 74.00828892836,
NA, 9.932785660941, 20.4423022398639, NA, 8.86486486486486, NA,
29.1895010095183, NA, 5.49249359209081, NA, 31.1304347826087,
NA, 4.83056957462149, NA, 42.4705882352941, NA, 5.56177678238149,
NA, 32.7455919395466, NA, 6.75039246467818, NA, 28.3888228299643,
NA, 5.50493545937737, NA, 44.1956393635828, NA, 4.93920972644377,
NA, 36.2768496420048, NA, 3.50467289719626, NA, 30.7692307692308,
NA, 4.04485382458951, NA, 48.7492373398414, NA, 3.04975922953451,
NA, 72.1604938271605, NA, 3.69761709120789, NA, 81.8697729988053,
NA, 5.14764565043895, NA, 85.4637336504162, NA, 6.75729708116753,
NA, 80.3231390652048, NA, 9.53678474114441, NA, 78.9630512514899,
NA, 9.58795562599049, NA, 79.6600403341976, NA, 12.6798910929599,
NA, 80.632183908046, NA, 10.5672105672106, NA, 67.6506024096386,
NA, 12.298682284041, NA, 68.7082728592163, NA, 10.3050595238095,
NA, 61.9558735837806, NA, 12.5674633770239, NA, 61.1953352769679,
NA, 10.8452335005789, NA, 50.6347800413345, NA, 9.35446463084654,
NA, 58.288125376733, NA, 10.5347166799681, NA, 58.3232077764277,
NA, 11.3076923076923, NA, 56.4117822076763, NA, 10.9069585613761,
NA, 44.9571132800946, NA, 10.0578034682081, NA, 52.0665901262916,
NA, 9.13818722139673, NA, 48.3361534122955, NA, 9.9236641221374,
NA, 44.424882629108, NA, 7.58468335787923, NA, 43.4916718075262,
NA, 6.68764752163651, NA, 41.0905002810568, NA, 6.81818181818182,
NA, 31.9174041297935, NA, 6.67634252539913, NA, 34.3841214244016,
NA, 6.72238372093023, NA, 35.1091703056769, NA, 6.96480938416422,
NA, 37.210186240973, NA, 7.85042100049529, NA, 32.9296527159394,
NA, 7.52759381898455, NA, 33.3132892363199, NA, 8.8734835355286,
NA)), row.names = c(NA, -220L), class = c("tbl_df", "tbl", "data.frame"
))
it's two time periods, for which I would like to have two facets, with a "free" x axis.
I have tried versions of the following code:
ggplot(to_plot, aes(x=date, y=value, linetype=type)) +
geom_line() +
# facet_wrap(~ wave, scales="free") +
facet_grid(. ~ wave, scales = "free_x") +
scale_linetype_manual(breaks = c("Party popularity", "Issue salience"),
values = c("solid", "dashed")) +
ylab("Share (percentage point)") +
scale_x_date(date_labels = "%b-%Y", date_breaks = "5 month", date_minor_breaks = "1 month",
limits = c(min(to_plot$date), max = max(to_plot$date)), expand=c(0,0)) +
theme_bw() +
theme(legend.title=element_blank(), legend.position="bottom",
legend.key.width = unit(2,"cm"), axis.title.x = element_blank())
Unfortunately I could not get the facets to work correctly. I am not sure what is going on here, I'd appreciate any hint!
解决方案
You are specifying limits on the facets' axes, which you need to remove. You should also filter out all the rows which have NA
in the value
column:
ggplot(dplyr::filter(to_plot, !is.na(value)),
aes(x=date, y=value, linetype=type)) +
geom_line(na.rm = TRUE) +
facet_grid(. ~ wave, scales = "free_x") +
scale_linetype_manual(breaks = c("Party popularity", "Issue salience"),
values = c("solid", "dashed")) +
ylab("Share (percentage point)") +
scale_x_date(date_labels = "%b-%Y",
date_breaks = "5 month",
date_minor_breaks = "1 month",
expand = c(0, 0)) +
guides(x = guide_axis(n.dodge = 2)) +
theme_bw() +
theme(legend.title= element_blank(),
legend.position="bottom",
legend.key.width = unit(2, "cm"),
axis.title.x = element_blank())
推荐阅读
- javascript - 如何将每个函数的结果排列到javascript中的数组中
- python - 读取 csv 以将时间转换为时间戳时出错
- python - 如何在 tkinter 中制作计时器?
- c# - Xamarin 形成比内容大得多的网格行高
- flutter - 按下搜索图标并在应用栏中的文本字段小部件上选择时如何使键盘出现?
- c++ - 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- android - 无法生成发布构建 apk
- c# - 在流式验证中重用的自定义验证器
- typescript - 如何使通用函数可用?
- html - JQuery Stop Text Flickering when Pressing Show Less / Show More