简体   繁体   English

如何将Plotly r中的色标转换为对数标尺

[英]How to turn the color scale in Plotly r to log scale

I am trying to have a logarithmic scale for the color bar in R, any ideas on how I can do it? 我正在尝试为R中的颜色栏设置对数标度,关于如何做到这一点有什么想法吗?

My code: 我的代码:

 TEST_DATAFRAME = read.table(TEST_FILE, sep="\\t",skip=2, header=T) PROD_DATAFRAME = read.table(PROD_FILE, sep="\\t",skip=2, header=T) PARAMETER = "Vf_High" LST_RESIDUAL <- PROD_DATAFRAME[PARAMETER] - TEST_DATAFRAME[PARAMETER] PARAM_DATAFRAME <- data.frame("NEW_MEASUREMENT" = TEST_DATAFRAME[PARAMETER], "OLD_MEASUREMENT" = PROD_DATAFRAME[PARAMETER], "RESIDUAL" = LST_RESIDUAL) colnames(PARAM_DATAFRAME) <- c("NEW_MEASUREMENT","OLD_MEASUREMENT","RESIDUAL") p <- plot_ly(PARAM_DATAFRAME, x = ~OLD_MEASUREMENT, y = ~NEW_MEASUREMENT, color=~RESIDUAL, colorscale = "Log", hovertext = paste("<b>New Measurement :</b>", PARAM_DATAFRAME$NEW_MEASUREMENT, "<br><b>Old Measurement :</b>", PARAM_DATAFRAME$OLD_MEASUREMENT, "<br><b>Residual :</b>" , PARAM_DATAFRAME$RESIDUAL)) %>% add_markers() #p <- layout(p, color = list(type = "log")) p 

this is my current output: 这是我当前的输出:

在此处输入图片说明

I also tried the following code: 我还尝试了以下代码:

 TEST_DATAFRAME = read.table(TEST_FILE, sep="\\t",skip=2, header=T) PROD_DATAFRAME = read.table(PROD_FILE, sep="\\t",skip=2, header=T) PARAMETER = "Vf_High" LST_RESIDUAL <- PROD_DATAFRAME[PARAMETER] - TEST_DATAFRAME[PARAMETER] PARAM_DATAFRAME <- data.frame("NEW_MEASUREMENT" = TEST_DATAFRAME[PARAMETER], "OLD_MEASUREMENT" = PROD_DATAFRAME[PARAMETER], "RESIDUAL" = abs(LST_RESIDUAL)) colnames(PARAM_DATAFRAME) <- c("NEW_MEASUREMENT","OLD_MEASUREMENT","RESIDUAL") brks <- pretty(range(PARAM_DATAFRAME$RESIDUAL)) gg <- ggplot(PARAM_DATAFRAME, aes(NEW_MEASUREMENT, OLD_MEASUREMENT, color = RESIDUAL)) + geom_point() + scale_colour_gradient( low = "blue", high = "red", trans = "log", breaks = brks, labels = brks) + theme_minimal() ggplotly(gg) 

this is the result: 结果是:

在此处输入图片说明

How can I give it legible labelling? 如何给它清晰的标签?

You could use ggplot to generate the logarithmic colour scale and then have plotly::ggplotly turn the ggplot grob into a plotly object. 您可以使用ggplot生成对数色标,然后使用plotly::ggplotlyggplot变成一个可绘制的对象。

Since you don't provide reproducible sample data, here is an example based on mtcars 由于您不提供可复制的样本数据,因此以下是基于mtcars的示例

brks <- pretty(range(mtcars$disp))
gg <- ggplot(mtcars, aes(mpg, wt, colour = disp)) +
    geom_point() +
    scale_colour_gradient(
        low = "blue", high = "red",
        trans = "log", breaks = brks, labels = brks) +
    theme_minimal()

ggplotly(gg)

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM