【发布时间】:2016-04-19 13:18:35
【问题描述】:
我创建了一个函数,它使用 ggvis 绘制我们定期查看的一些数据的图表。在此,最后一组“Overall”被覆盖,显示为宽度为 3 的黑线,而不是默认值。不幸的是,我为覆盖默认值而采取的步骤没有显示在图例中。我不确定该怎么做才能完成这项工作。我曾尝试专门调用 add_legend,但没有成功。
用于生成它的代码是(也带有一些随机数据):
CAL_DATE = seq(as.Date("10/1/2015", format = "%m/%d/%Y"),
as.Date("3/31/2016", format = "%m/%d/%Y"), by = 1)
CAL_DATE = as.POSIXct(CAL_DATE)
a = data.frame(cbind(ma_AHT = round(rweibull(length(CAL_DATE),
5, 500),0), CT_DS = rep("A",length(CAL_DATE))))
b = data.frame(cbind(ma_AHT = round(rweibull(length(CAL_DATE),
4, 540),0), CT_DS = rep("B", length(CAL_DATE))))
Overall = data.frame(cbind(ma_AHT = round(rweibull(length(CAL_DATE),
10, 475),0), CT_DS = rep("Overall", length(CAL_DATE))))
a$CAL_DATE = CAL_DATE
b$CAL_DATE = CAL_DATE
Overall$CAL_DATE = CAL_DATE
data = rbind(a, b, Overall)
plot_ma = function(x){
x %>%
group_by(CT_DS) %>%
ggvis(~CAL_DATE, ~ma_AHT, stroke = ~CT_DS) %>%
layer_lines() %>%
filter(CT_DS == "Overall") %>%
layer_lines(stroke := "black", strokeWidth := 3) %>%
set_options(renderer = "canvas") %>%
add_legend("stroke", title = "~ CT") %>%
add_axis("x", title = "Date", title_offset = 60,
properties = axis_props(
labels = list(
angle = -50,
align = "right",
baseline = "middle"
))) %>%
add_axis("y", title = "M.A. AHT (sec)")
}
plot_ma(data)
这应该会生成如下所示的内容。我唯一关心的是如何使图例显示“整体”也为黑色。
【问题讨论】:
-
你能添加一个小的示例数据集吗?
-
如果
Overall总是最后一个,我想你可以通过range定义scale_nominal中的颜色。在您的简单示例中,它类似于scale_nominal("stroke", range = c("blue", "orange", "black"))。对于更多组,您可以根据您拥有的组数制作颜色矢量或从样本中提取颜色,然后在末尾附加“黑色”。 -
数据集之间的组数可能会有很大差异。您能否让我更深入地了解如何从样本中提取颜色?我查看了一个 ggvis 对象,试图找到它可能在哪里,但没有成功。