如何在 R 中的交互式图形中绘制具有对数刻度的等高线?
How to plot contours with a log scale in an interactive graph in R?
我有一个用 plotly 显示的等高线图:
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:如果 plotly 做不到,有什么交互式图形库可以做到?我需要一个将我的图形导出到 html 文件的库。
备注#3:我尝试用对数刻度的 ggplot 绘图,然后使用 ggplotly 命令,但最后,绘图只是绘制 log(z)。
备注 #4: 我尝试使用热图,按照指示手动设置色标 here,但无法正常工作。
这是我最终想出的解决方法:
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...
的主题
这个答案的另一个批评者是我没有在图表上使用 plotly 的离散颜色,而是连续的渐变。
我尝试使用 here 提供的解决方案,但交互式图表并未指示鼠标悬停时 z 的确切值,而是指示范围(例如“[0.3, 1)”),即无济于事,失去了互动的乐趣。
因此欢迎其他解决方案!
我有一个用 plotly 显示的等高线图:
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:如果 plotly 做不到,有什么交互式图形库可以做到?我需要一个将我的图形导出到 html 文件的库。
备注#3:我尝试用对数刻度的 ggplot 绘图,然后使用 ggplotly 命令,但最后,绘图只是绘制 log(z)。
备注 #4: 我尝试使用热图,按照指示手动设置色标 here,但无法正常工作。
这是我最终想出的解决方法:
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...
的主题这个答案的另一个批评者是我没有在图表上使用 plotly 的离散颜色,而是连续的渐变。
我尝试使用 here 提供的解决方案,但交互式图表并未指示鼠标悬停时 z 的确切值,而是指示范围(例如“[0.3, 1)”),即无济于事,失去了互动的乐趣。
因此欢迎其他解决方案!