r - 使用 ColorRamp 向 Plotly 条形图添加自定义颜色
问题描述
我正在使用 Plotly 制作图表。目前我正在尝试将自定义颜色应用于我的图表,但该图表的颜色比 ColorBrewer 调色板提供的颜色多。
这是我的数据: https ://github.com/kffont/Colorado/blob/master/data1.csv
数据是 15 行数据的 5 个数字摘要的最小值、中值和最大值。第 16 行标识分类标签(min、med、max)。
我使用 Color Ramp 创建了一个函数,以允许在我的条形图中使用更多颜色。那工作正常。当我尝试将颜色分配给绘图时,就会出现问题。我使用了很多解决方案都无济于事。以下是我尝试过的一些方法:
创建一个 colnames 向量,颜色 = colnames 颜色 = 调色板
使用索引分配调色板名称 [1] 等颜色
删除痕迹并创建 2 行代码;1个用于情节,1个用于布局。我在 #1 中尝试了使用和不使用 color/colors 方法的这种方法
这是我使用的基本代码。
#Libraries
library(plotly)
library(colorRamps)
library(RColorBrewer)
#Create palette col.a.cat1<-colorRampPalette(brewer.pal(9,"YlOrRd"))
#Color = Colnames
abc<-colnames(data1)
#Barcharts #1 (p) and #2 (o)
p<-plot_ly(a.cat.14, x = ~Level, y = ~a.cat.14[, 1],, type = 'bar', name = colnames(a.cat.14[1])) %>%
add_trace(y = ~a.cat.14[, 2], name = colnames(a.cat.14[2])) %>%
add_trace(y = ~a.cat.14[, 3], name = colnames(a.cat.14[3])) %>%
add_trace(y = ~a.cat.14[, 4], name = colnames(a.cat.14[4])) %>%
add_trace(y = ~a.cat.14[, 5], name = colnames(a.cat.14[5])) %>%
add_trace(y = ~a.cat.14[, 6], name = colnames(a.cat.14[6])) %>%
add_trace(y = ~a.cat.14[, 7], name = colnames(a.cat.14[7])) %>%
add_trace(y = ~a.cat.14[, 8], name = colnames(a.cat.14[8])) %>%
add_trace(y = ~a.cat.14[, 9], name = colnames(a.cat.14[9])) %>%
add_trace(y = ~a.cat.14[, 10], name = colnames(a.cat.14[10])) %>%
add_trace(y = ~a.cat.14[, 11], name = colnames(a.cat.14[11])) %>%
add_trace(y = ~a.cat.14[, 12], name = colnames(a.cat.14[12])) %>%
add_trace(y = ~a.cat.14[, 13], name = colnames(a.cat.14[13])) %>%
add_trace(y = ~a.cat.14[, 14], name = colnames(a.cat.14[14])) %>%
add_trace(y = ~a.cat.14[, 15], name = colnames(a.cat.14[15])) %>%
layout(title = "Adult Cats: Minimum, Median, Maximum", yaxis = list(title= 'Count'), barmode = 'group')
p
o<-plot_ly(a.cat.14, x = ~Level, y = ~a.cat.14[, c(1:15)], type = 'bar', name = colnames(a.cat.14)) %>%
layout(title = "Adult Cats: Minimum, Median, Maximum", yaxis = list(title= 'Count'), barmode = 'group')
感谢您的帮助!
解决方案
colorRampPalette
需要一个“低”和“高”的颜色,在你的情况下可能是黄色和红色。colorRampPalette(list('yellow', 'red'))
当您调用返回的函数时,提供的数字参数是要返回的颜色数
colors <- colorRampPalette(list('yellow', 'red'))(15)
什么时候可以将颜色分配给
Plotly
p <- plot_ly(x = x, y = y, marker = list(color = colors), type='bar')
#Libraries
library(plotly)
library(colorRamps)
library(RColorBrewer)
#read csv
csv <- read.csv(url("https://raw.githubusercontent.com/kffont/Colorado/master/data1.csv"))
col_names <- colnames(csv)
#create palette
colors <- colorRampPalette(list('yellow', 'red'))(length(col_names))
#get y values
y <- list()
for (i in 1:length(col_names))
{
y[[i]] = csv[[i]][3]
}
p <- plot_ly(x = col_names[2:15], y = y[2:15], marker = list(color = colors[2:15]), type='bar')
p
推荐阅读
- json - 从数组和对象中提取字段的值
- html - 如何使用 javascript 和递归查询嵌套级别 DOM
- javascript - 如何修复'在猫头鹰轮播中的图像之间切换内容移动到顶部'
- javascript - 窗口加载未显示正确的其他消息
- angular - 新的 Angular 项目无法正确渲染
- excel - 使用 Excel VBA 从两个列表中构建一个列表
- wordpress - 匹配 htaccess 重定向
- swift - 如何在 SwiftUI 中的 TabView 的 tabItem 上显示徽章编号?
- c++ - Memset 没有填满整个指针数组 c++
- asp.net-core - 如何在 Blazor 服务器端呈现 Javascript?