使用ColorRamp向自定义条形图添加自定义颜色

时间:2018-08-17 17:51:15

标签: r colors plotly

我正在使用Plotly制作图表。目前,我正在尝试将自定义颜色应用于图形,但是图形比ColorBrewer调色板提供的颜色更多。

这是我的数据: https://github.com/kffont/Colorado/blob/master/data1.csv

数据是15行数据的5个数字汇总的最小值,中位数和最大值。第16行标识类别标签(最小,中,最大)。

我使用了“色彩斜坡”来创建一个函数,以允许在我的条形图中使用更多的颜色。很好当我尝试将颜色分配给绘图时会发生问题。我使用了许多解决方案都无济于事。这是我尝试过的一些方法:

  1. 创建一个姓氏向量, 颜色=姓 colors =调色板

  2. 使用索引为调色板名称[1]等分配颜色

  3. 删除跟踪并创建两行代码; 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')

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  • 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')
    

enter image description here


#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