我有一个用曲线显示的轮廓图:
x <- rep(seq(0.01, 0.1, length.out = 50), 50)
y <- rep(seq(0.01, 0.1, length.out = 50), each = 50)
z <- 1 / (x^2 + y^2)
my.data <- data.frame(x, y, z)
p <- plot_ly(data = my.data, x = x, y = y, z = z, type = "contour")
结果如下:
问题:如何使用z颜色的对数比例?或者如何手动控制轮廓水平?
我尝试了layout(p, zaxis = list(type = "log"))
,但它不起作用。
备注#1:我不想绘制log(z)
,这是一个明显的解决方案,但要有一个日志色标。
备注#2:如果情节无法实现,那么交互式图形库可以做什么?我需要一个将我的图形导出到html文件的库。
备注#3:我尝试使用ggplot以对数比例绘图,然后使用ggplotly命令,但最后,只是绘制log(z)。
备注#4:我尝试使用热图,手动设置指示here的色阶,但无法使其正常工作。
答案 0 :(得分:0)
这是我最终提出的解决方法:
ggplot(my.data, aes(x = x, y = y, fill = z)) +
geom_tile() +
scale_fill_gradientn(colours = c("blue",
"cyan",
"green",
"yellow",
"orange",
"red"),
values = rescale(c(0.3, 1, 2, 5, 10, 20, 35))) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0))
ggplotly()
因此,我们的想法是在ggplot2
中手动设置色阶,然后使用ggplotly
命令对其进行转换。
结果如下:
唯一剩下的问题是色标,它不是对数的。我可以很容易地改变休息时间,但我不知道如何改变颜色。我想这是another question ...
的主题这个答案的另一个批评者是,我没有图表中的离散颜色,而是一个连续渐变。
我尝试使用提供的解决方案here,但是交互式图表并未指示鼠标悬停时z的确切值,而是范围(例如&#34; [0.3,1]&#34; ),这没有帮助,使它失去了互动的兴趣。
因此欢迎替代解决方案!