- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下函数来制作自定义堆叠图:
stacked_plot <- function(data, what, by = NULL, date_col = date, date_unit = NULL, type = 'area'){
by <- enquo(by)
what <- ensym(what)
date_col <- ensym(date_col)
date_unit <- enquo(date_unit)
if (!rlang::as_string(date_col) %in% names(data)){
return(cat('Nie odnaleziono kolumny "', as_string(date_col), '".', sep = ''))
}
if (!rlang::quo_is_null(date_unit)){
data <- data %>%
mutate(!!date_col := floor_date(!!date_col, unit = !!date_unit, week_start = 1))
}
if (!rlang::quo_is_null(by)) {
data <- data %>%
filter(!is.na(!!by)) %>%
group_by(!!date_col, !!by) %>%
summarise(!!what := sum(!!what, na.rm = TRUE)) %>%
ungroup() %>%
complete(!!date_col, !!by, fill = rlang::list2(!!what := 0))
} else {
data <- data %>%
group_by(!!date_col) %>%
summarise(!!what := sum(!!what, na.rm = TRUE)) %>%
complete(!!date_col, fill = rlang::list2(!!what := 0))
}
if (type == 'area'){
p <- data %>%
ggplot(aes(!!date_col, !!what, fill = !!by)) +
geom_area(position = 'stack')
} else if (type == 'col'){
p <- data %>%
ggplot(aes(!!date_col, !!what, fill = !!by)) +
geom_col(position = 'stack')
}
p <- p +
scale_x_date(breaks = '1 month', date_labels = '%Y-%m', expand = c(.01, .01)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, vjust = .4)) +
labs(fill = '')
return(p)
}
现在,我想将它与如下数据一起使用:
data <- structure(list(category1 = structure(c(7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 2L, 1L, 8L, 1L, 1L,
1L, 1L, 6L, 6L, 5L, 5L, 1L, 1L, 8L, 3L, 1L, 1L, 8L, 1L, 1L, 1L,
1L, 1L, 1L, 4L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 2L, 1L, 8L, 1L, 1L, 1L, 1L, 6L, 6L, 5L,
5L, 1L, 1L, 8L, 3L, 1L, 1L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 2L, 1L, 8L, 1L, 1L, 1L, 1L, 6L, 6L, 5L, 5L, 1L, 1L, 8L, 3L,
1L, 1L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 2L, 1L, 8L, 1L,
1L, 1L, 1L, 6L, 6L, 5L, 5L, 1L, 1L, 8L, 3L, 1L, 1L, 8L, 1L, 1L,
1L, 1L, 1L, 1L, 4L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 2L, 1L, 8L, 1L, 1L, 1L, 1L, 6L, 6L,
5L, 5L, 1L), .Label = c("base", "cat1", "cat2", "cat3", "cat4",
"cat5", "cat6", "cat7"), class = "factor"), date = structure(c(14403,
14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403,
14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403,
14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403, 14403,
14403, 14403, 14403, 14403, 14403, 14410, 14410, 14410, 14410,
14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410,
14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410,
14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410,
14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410, 14410,
14410, 14410, 14410, 14417, 14417, 14417, 14417, 14417, 14417,
14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417,
14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417,
14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417,
14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417, 14417,
14417, 14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424,
14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424,
14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424,
14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424,
14424, 14424, 14424, 14424, 14424, 14424, 14424, 14424, 14431,
14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431,
14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431,
14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431,
14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431, 14431,
14431, 14431), class = "Date"), value = c(0.0296166578938365,
7.02892806393191e-05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -23.1966033032737, 0, -17195.0853457778, 0, 0, 0, 0, 0,
7861.28404641463, 12189.6349251651, 0, 0, -3741.93702617252,
0, 176.303827249194, 391.710849761278, 131970.980379196, -1587.22123177257,
297.978554303167, -51860.1739251141, 0, 0, 0, 0, -391.332709445819,
0.000172964963558834, 0.0098722192979455, 2.34186560613466e-05,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.73219962306076,
0, -17218.0930016352, 0, 0, 0, 0, 0, 7781.23968988082, 12189.6349251651,
0, 0, 0, 0, 449.478850296707, 293.783137320959, 131970.980379196,
-1404.7589064091, 250.836431075847, -56540.9156671359, 0, 0,
0, 0, -558.95740304599, 5.77335368827169e-05, 0.00329073976598183,
7.79511453535577e-06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -2.57739987435359, 0, -17241.1006574926, 0, 0, 0, 0, 0,
6598.97373566299, 12189.6349251651, 0, -3324.25546024928, 0,
0, 549.603379062553, 195.855424880639, 131970.980379196, -529.148187957385,
219.828510450391, -64437.2982346174, 0, 0, 0, 0, -1447.22409849783,
1.92288024882845e-05, 0.00109691325532728, 2.60503400284112e-06,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.859131813420729,
0, -17264.10831335, 0, 0, 0, 0, 0, 5437.37054226604, 0, 0, 0,
0, 0, 293.381058210822, 293.783137320959, 131970.980379196, 526.728756878514,
207.979955414647, -65107.9475533677, 0, 0, 0, 0, -336.514645781955,
6.40960082942816e-06, 0.000366094798965479, 8.69455082789682e-07,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127.057071107617,
0, -17287.1159692073, 0, 0, 0, 0, 0, 5343.46624155083, 0, 0,
0)), class = "data.frame", row.names = c(NA, -201L))
所以我做了以下情节:
data %>% stacked_plot(value, category1, date, type = 'col')
category1
) 的堆叠顺序。我想要做的是重新排序我的函数中的因子水平,以便
base
类别将始终显示为从 0 开始,其余级别将堆叠在其之上或之下。好吧,它并不总是必须命名为
base
,但我认为我们可以为我们的函数添加一个参数并为其提供名称
base
多变的。当然,输入
data
文件可以有不同数量的类别。
最佳答案
看看@Inhabitant 在这个问题中的回答:
How to control ordering of stacked bar chart using identity on ggplot2
基本上类别是根据因子中的级别顺序堆叠的,并且堆叠顺序从上到下开始。
以下是我如何使用您的数据重新排序堆叠:
df_0 <- df_0 %>%
filter(!is.na(category1)) %>%
group_by(date, category1) %>%
summarise(value := sum(value, na.rm = TRUE)) %>%
ungroup() %>%
complete(date, category1, fill = rlang::list2(value := 0))
df_0$category1 <- df_0$category1 %>%
factor(levels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "base"))
df_0 %>%
ggplot(aes(date, value, fill = category1)) +
geom_col(position = 'stack')
data
更改为至 df_0
避免与 R 函数混淆 data()
关于r - 如何绘制一个因子水平作为 geom_col/geom_area 的基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342279/
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
尝试查找可在地块中使用的不同类型项目的列表 来自不同样本的投影类型: projection = list(type = "equirectangular") projection = list(typ
我正在尝试使用 Java Graphics API 绘制 GIF,但无法使用下面的代码成功绘制 GIF。仅绘制 GIF 的第一张图像或缩略图,但不播放。 public void paintCompon
我目前正在使用 JFrame 并尝试绘制一个矩形,但我不知道如何执行代码 paint(Graphics g),如何获取 Graphics 对象? package com.raggaer.frame;
这个领域的新手,希望得到一些帮助。 我有一个"Missile.java" 类,我在那里画东西。我想绘制一个 ImageView,我正在使用以下代码: ImageView v = (ImageView)
下面列出了圆形的例子 这是我的 JavaScript 代码。 最佳答案 假设您的 randomColor 是正确的,您只需要: 从 canvas.onclick 中移除 context.clearR
我在绘制和缩放 ImageView 时遇到问题。请帮帮我.. 当我画一些东西然后拖动或缩放图像时 - 绘图保留在原处,如您在屏幕截图中所见。而且我只需要简单地在图片上绘图,并且可以缩放和拖动这张图片。
我们可以在形式之外绘制图像和文本...我的意思是在字面上... 我知道问这个问题很愚蠢但是我们能不能... 最佳答案 您可以通过创建表单并将其 TransparentColor 属性设置为背景色来“作
我在绘制/布局期间收到 3 个对象分配警告 super.onDraw(canvas); canvas.drawColor(Color.WHITE); Paint textPaint = new Pai
我有一个示例时间序列数据框: df = pd.DataFrame({'year':'1990','1991','1992','1993','1994','1995','1996',
我试图想出一种简洁的方法来绘制 R 数据框中所有列的 GridView 。问题是我的数据框中既有离散值又有数值。为简单起见,我们可以使用 R 提供的名为 iris 的示例数据集。我会使用 par(mf
我有一个由 10 列和 50 行组成的 data.frame。我使用 apply 函数逐列计算密度函数。现在我想绘制我一次计算的密度。 换句话说,而不是绘图... plot(den[[1]]) plo
我想知道我们如何才能在第一个和第二个组件之外绘制个人,如下所示: 最佳答案 这可能有效: pc.cr <- princomp(USArrests, cor = TRUE) pairs(pc.cr$lo
我是Pandas和matplotlib的新手,想绘制此DataFrame season won team matches pct_won 0 20
我正在尝试为 distplot 子图编写一个 for 循环。 我有一个包含许多不同长度列的数据框。 (不包括 NaN 值) fig = make_subplots( rows=len(asse
我想创建一个具有密度的 3d 图。 我使用函数 density 首先为特定的 x 值创建一个二维图,然后该函数创建密度并将它们放入 y 变量中。现在我有第二组 x 值并将其再次放入密度函数中,然后我得
全部, 我一直在研究全局所有 MTB 步道的索引。我是 Python 人,所以对于所有涉及的步骤,我都尝试使用 Python 模块。 我能够像这样从 OSM 立交桥 API 中获取关系: from O
我正在使用 e1071 包中的支持向量机对我的数据进行分类,并希望可视化机器实际如何进行分类。但是,在使用 plot.svm 函数时,出现无法解决的错误。 脚本: library("e1071") d
我制作了以下图表,它是使用 xts 对象创建的。 我使用的代码很简单 plot(graphTS1$CCLL, type = "l", las = 2, ylab = "(c)\nCC for I
在绘制状态图时,您如何知道哪些状态放在框中,哪些状态用于转换箭头?我注意到转换也是状态。 我正在查看 this page 上的图 1 : 最佳答案 转换不是状态。转换是将对象从一种状态移动到下一种状态
我是一名优秀的程序员,十分优秀!