你好堆栈溢出社区,
我正在尝试寻找一种方法来着色两列,并设法将它们放到堆叠的条形图中。 X轴表示月份,而列表示年份(分别为“ n-1”年和“ n”年)和业务类型。业务类型很容易上色,因为它是填充,但是我找不到找到“ n-1”年和“ n”年列具有不同颜色的方法,或者是澄清每月每个列代表的颜色的方法。不同的一年。
这是我到目前为止使用的代码:
guard let currentRenderPassDescriptor = view.currentRenderPassDescriptor,
let currentDrawable = view.currentDrawable,
let renderPipelineState = renderPipelineState,
let encoder = commandBuffer.makeRenderCommandEncoder(descriptor: currentRenderPassDescriptor)
else {
semaphore.signal()
return
}
encoder.pushDebugGroup("RenderFrame")
encoder.setRenderPipelineState(renderPipelineState)
encoder.setVertexBytes(&textureOccupiedDimensions, length: MemoryLayout<vector_int2>.size, index: 0)
encoder.setVertexBytes(&viewportSize, length: MemoryLayout<vector_int2>.size, index: 1)
encoder.setFragmentTexture(texture, index: 0)
encoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: 4, instanceCount: 1)
encoder.popDebugGroup()
encoder.endEncoding()
commandBuffer.addScheduledHandler { [weak self] (buffer) in
guard let unwrappedSelf = self else { return }
unwrappedSelf.didRenderTexture(texture, withCommandBuffer: buffer, device: device)
unwrappedSelf.semaphore.signal()
}
commandBuffer.present(currentDrawable) // schedules display at next possible refresh point
commandBuffer.commit()
答案 0 :(得分:0)
在这里使用构面层是一种更好的方法,但是到现在为止,我很确定您已经知道该怎么做。
我的建议是创建一个新变量,将yera
和business
粘贴在一起,并将其用作填充样式。
数据
df <- data.frame(
year = rep(c(2017, 2018), each = 24),
gwp = rnorm(48, mean = 10000, sd = 300),
month = rep(1:12, 4),
business = rep(
c(
rep("new", 12),
rep("renewal", 12)
)
)
)
df <- df %>%
mutate(
fill = paste(business, year, sep = "-")
)
情节
ggplot() +
geom_col(
data = df %>% filter(year == 2018),
aes(x = month, fill = fill, y = gwp),
width = barwidth
) +
geom_col(
data = df %>% filter(year == 2017),
aes(x = month + as.numeric(barwidth) + 0.05, fill = fill, y = gwp),
width = barwidth
)
如果您使用新变量创建一个因子,并根据需要对图例标签进行排序。
另一种方法是控制apha,您可以在this question的答案中看到如何做到这一点