- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个时间序列数据,其中在y轴DIAG_RATE_65_PLUS
上绘制疾病的诊断率,在x轴NAME
上以简单的条形图比较地理区域。我的时间变量是ACH_DATEyearmon
,如标题所示,动画在循环播放。
df %>% ggplot(aes(reorder(NAME, DIAG_RATE_65_PLUS), DIAG_RATE_65_PLUS)) +
geom_bar(stat = "identity", alpha = 0.66) +
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22),
axis.text.x=element_blank()) +
transition_states(ACH_DATEyearmon, transition_length = 1, state_length = 1) +
ease_aes('linear')
NAME
,所以它按
DIAG_RATE_65_PLUS
排名。
DIAG_RATE_65_PLUS
从最小到最大完美地对组进行排序的框架。理想情况下,我希望完美订购最后一个月“2018年8月”。前几个月所有的x轴都可以基于“2018年8月”订购的
NAME
进行设置。
df %>%
ggplot(aes(ordering, group = NAME)) +
geom_tile(aes(y = DIAG_RATE_65_PLUS/2,
height = DIAG_RATE_65_PLUS,
width = 0.9), alpha = 0.9, fill = "gray60") +
geom_hline(yintercept = (2/3)*25, linetype="dotdash") +
# text in x-axis (requires clip = "off" in coord_cartesian)
geom_text(aes(y = 0, label = NAME), hjust = 2) + ## trying different hjust values
theme(plot.title = element_text(hjust = 1, size = 22),
axis.ticks.y = element_blank(), ## axis.ticks.y shows the ticks on the flipped x-axis (the now metric), and hides the ticks from the geog layer
axis.text.y = element_blank()) + ## axis.text.y shows the scale on the flipped x-axis (the now metric), and hides the placeholder "ordered" numbers from the geog layer
coord_cartesian(clip = "off", expand = FALSE) +
coord_flip() +
labs(title='{closest_state}', x = "") +
transition_states(ACH_DATEyearmon,
transition_length = 2, state_length = 1) +
ease_aes('cubic-in-out')
hjust=2
时,标签未对齐且无法移动。
hjust=1
更改以上代码
df %>%
ggplot(aes(y=NAME, x=DIAG_RATE_65_PLUS)) +
geom_barh(stat = "identity", alpha = 0.66) +
geom_hline(yintercept=(2/3)*25, linetype = "dotdash") + #geom_vline(xintercept=(2/3)*25) is incompatible, but geom_hline works, but it's not useful for the plot
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22)) +
transition_states(ACH_DATEyearmon, transition_length = 1, state_length = 50) +
view_follow(fixed_x=TRUE) +
ease_aes('linear')
最佳答案
条形排序由ggplot
完成,不受gganimate
影响。根据每个DIAG_RATE_65_PLUS
中ACH_DATEyearmon
的总和对这些小节进行排序。下面,我将说明这些条的排序方式,然后提供代码来创建动画图,并在每帧中按从低到高的顺序进行所需的排序。
要查看条形的顺序,首先让我们创建一些假数据:
library(tidyverse)
library(gganimate)
theme_set(theme_classic())
# Fake data
dates = paste(rep(month.abb, each=10), 2017)
set.seed(2)
df = data.frame(NAME=c(replicate(12, sample(LETTERS[1:10]))),
ACH_DATEyearmon=factor(dates, levels=unique(dates)),
DIAG_RATE_65_PLUS=c(replicate(12, rnorm(10, 30, 5))))
DIAG_RATE_65_PLUS
的
NAME
的总和。请注意x轴
NAME
值的顺序:
df %>%
ggplot(aes(reorder(NAME, DIAG_RATE_65_PLUS), DIAG_RATE_65_PLUS)) +
geom_bar(stat = "identity", alpha = 0.66) +
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22))
DIAG_RATE_65_PLUS
显式将
NAME
求和并按总和排序时,排序是相同的:
df %>% group_by(NAME) %>%
summarise(DIAG_RATE_65_PLUS = sum(DIAG_RATE_65_PLUS)) %>%
arrange(DIAG_RATE_65_PLUS)
NAME DIAG_RATE_65_PLUS
1 A 336.1271
2 H 345.2369
3 B 346.7151
4 I 350.1480
5 E 356.4333
6 C 367.4768
7 D 368.2225
8 F 368.3765
9 J 368.9655
10 G 387.1523
NAME
对
DIAG_RATE_65_PLUS
和
ACH_DATEyearmon
分别进行排序。为此,我们首先生成一个名为
order
的新列,该列设置所需的顺序:
df = df %>%
arrange(ACH_DATEyearmon, DIAG_RATE_65_PLUS) %>%
mutate(order = 1:n())
transition_states
为每个
ACH_DATEyearmon
生成框架。
view_follow(fixed_y=TRUE)
仅显示当前
ACH_DATEyearmon
的x值,并为所有帧保持相同的y轴范围。
order
用作x变量,然后运行
scale_x_continuous
将x-label更改为
NAME
值。我将这些标签包括在绘图中,以便您可以看到它们随每个
ACH_DATEyearmon
的变化而变化,但是您当然可以像在示例中所做的那样在实际绘图中将其删除。
p = df %>%
ggplot(aes(order, DIAG_RATE_65_PLUS)) +
geom_bar(stat = "identity", alpha = 0.66) +
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22)) +
scale_x_continuous(breaks=df$order, labels=df$NAME) +
transition_states(ACH_DATEyearmon, transition_length = 1, state_length = 50) +
view_follow(fixed_y=TRUE) +
ease_aes('linear')
animate(p, nframes=60)
anim_save("test.gif")
view_follow()
,则可以看到“整个”图的样子(当然,可以通过在
transition_states
行之前停止代码来查看完整的非动画图)。
p = df %>%
ggplot(aes(order, DIAG_RATE_65_PLUS)) +
geom_bar(stat = "identity", alpha = 0.66) +
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22)) +
scale_x_continuous(breaks=df$order, labels=df$NAME) +
transition_states(ACH_DATEyearmon, transition_length = 1, state_length = 50) +
#view_follow(fixed_y=TRUE) +
ease_aes('linear')
coord_flip
包中的
geom_barh
(水平条形图)代替
ggstance
。请注意,我们必须在
aes
和
view_follow()
中切换y和x,并且y轴
NAME
值的顺序现在是恒定的:
library(ggstance)
# Set NAME order based on August 2017 values
df = df %>%
arrange(DIAG_RATE_65_PLUS) %>%
mutate(NAME = factor(NAME, levels=unique(NAME[ACH_DATEyearmon=="Aug 2017"])))
p = df %>%
ggplot(aes(y=NAME, x=DIAG_RATE_65_PLUS)) +
geom_barh(stat = "identity", alpha = 0.66) +
labs(title='{closest_state}') +
theme(plot.title = element_text(hjust = 1, size = 22)) +
transition_states(ACH_DATEyearmon, transition_length = 1, state_length = 50) +
view_follow(fixed_x=TRUE) +
ease_aes('linear')
animate(p, nframes=60)
anim_save("test3.gif")
关于r - gganimate如何订购有序的酒吧时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623722/
我一直使用这个习语在 Python 2 中以 utf-8 标准输出一堆内容: sys.stdout = codecs.getwriter('utf-8')(sys.stdout) 但老实说,我不知道
我正在使用 rails 3.2.12 和一个名为 private pub 的伟大 gem 开发一个聊天应用程序。 ,您可以找到一个截屏视频here .它建立在 faye 之上并使您能够通过推送消息轻松
我试图让我的 Collection View 单元格覆盖屏幕的高度而不进入导航栏下方。我得到了导航栏的高度,并用它来制作单元格的高度。问题是单元格仍然比它应该的高,如果我向下滚动它会在导航栏下方。我需
我有一个这样的预处理器指令, //#define SPEC_CONTROL // Is not defined, but can be if need be #define SPEC_A_CONTR
我刚刚在使用 barplot 时发现了一些奇怪的东西在 R. 让 y 是向量 > y [1] 24924006 15310556 11638412 9542834 8696133 使用 barpl
尝试实现一个基于私有(private)酒吧(类似于主宰)的简单通知系统。瑞安·贝茨 (Ryan Bates) 见:http://railscasts.com/episodes/316-private-
我想知道这两者有何不同? var hello = foo?foo:bar; 对比 var hello = foo || bar; 你能解释一下吗?和一些案例?还是两者相同? PS : foo/bar
我是一名优秀的程序员,十分优秀!