小编Cli*_*iff的帖子

热图颜色在图中不起作用

我正在尝试使用图表中的R in Shiny打印出一组热图.我想给他们一个自定义的色标,但它不是我想要它的表现.当我在构建我的绘图图表时使用colors =选项时,它似乎使用值的分布,而不是我给它分配颜色的zmin和zmax.

在下面的示例代码中,您可以看到我使用colors =选项为每个绘图提供相同的色阶(colorScale).当我有一个分布良好的数据集时,这就像我在第一,第二和第四行图中所期望的那样.

但是,在第三行中,图表的数据非常偏斜,您可以看到比例看起来与其他一切不同 - 它们有蓝色和红色,但跳过中间的白色,而不是紫色.

在我的实际代码中,这对于中间有很多值的图表造成了很大的问题,两端都有一些极端 - 我希望中间的那些值显示为白色,表明没有变化,但相反,它们是紫色的,这使得更难以挑选出重要的价值观(极端的价值观).

有没有办法强制颜色分配表现我想要的方式?

谢谢,克利夫

server.R

if (!require("pacman")) install.packages("pacman")

pacman::p_load(shiny,data.table,plotly)


colorScale <- colorRamp(c("darkblue","cornflowerblue","white","sandybrown","firebrick"))

nCodeNames <- c("a","b","c","d","e","f","g","h","i","j","k","l")
means = c(rnorm(600,0,2.5),runif(600,-5,5),runif(130,-4,-3.9),runif(70,4.5,5),rnorm(150,-3),rnorm(50,4),rnorm(180,-2.5),runif(20,4.93,4.98),runif(300,-4,3),rnorm(300,3.5))



dt <- data.table(age=rep(rep(c(11:20),times=20),times=12),composite=rep(rep(c(81:100),each=10),times=12),mean=means,n_code=rep(nCodeNames,each=200))

sub<-dt[n_code=="a"]

shinyServer(function(input, output) {

for(Ncode in nCodeNames){
  local({
    ncode = Ncode
    output[[paste0("grid",ncode)]] <- renderPlotly({
      sub <- dt[n_code == ncode]
      p <- plot_ly(data=sub, x=~age, y=~composite, z=~mean, type="heatmap", zmin=-5,zmax=5, 
                   colors = colorScale, colorbar=list(thickness="15"))%>%
           layout(title=ncode,xaxis=list(type="category",tickvals=c(11,15,20)),yaxis=list(title="",ticks=""))
    })
  })
}
})
Run Code Online (Sandbox Code Playgroud)

ui.R

if (!require("pacman")) install.packages("pacman")

pacman::p_load(shiny, plotly)

nCodeNames <- c("a","b","c","d","e","f","g","h","i","j","k","l")


shinyUI(navbarPage(
  "E-N …
Run Code Online (Sandbox Code Playgroud)

r heatmap shiny plotly

5
推荐指数
1
解决办法
1198
查看次数

标签 统计

heatmap ×1

plotly ×1

r ×1

shiny ×1