如何使用 plotly 在散点图中显示第三个变量的第二个图例?
Posted
技术标签:
【中文标题】如何使用 plotly 在散点图中显示第三个变量的第二个图例?【英文标题】:How to show a second legend for a third variable in a scatter plot using plotly? 【发布时间】:2020-08-01 01:43:43 【问题描述】:我有以下代码生成散点图(在r 中使用plotly),我想添加代表标记totalValue
的大小的legend(它是代表值的连续变量特定建筑物),我该怎么做?
f <- list(
family = "Courier New, monospace",
size = 18,
color = "#7f7f7f"
)
x <- list(
title = "Age of Buildings",
titlefont = f,
zeroline = FALSE,
showline = FALSE,
showticklabels = TRUE,
showgrid = TRUE
)
y <- list(
title = "Total Violations",
titlefont = f,
zeroline = FALSE,
showline = FALSE,
showticklabels = TRUE,
showgrid = TRUE
)
fig2 <- plot_ly(final, x=~agebuilding, y=~violationstotal, mode= "markers", color =
~INdexrehabless6, size = ~totalvalue)
fig2 <- fig2 %>% layout(xaxis = x, yaxis = y, legend=list(title=list(text='<b>
Housing Conditions </b>'))) #chaging name legend
fig2
数据集样本:
agebuilding violationstotal INdexrehabless6 totalvalue
32 5 0 350000
120 15 1 50000
100 25 1 100000
32 31 0 210000
33 9 0 150000
50 20 0 301000
15 28 0 175000
70 18 1 125000
这是我得到的情节
【问题讨论】:
你能提供一个样本数据集吗? 我刚刚添加了一个示例 【参考方案1】:据我所知,在plotly 中绘制两个图例尚不可能:
[https://github.com/plotly/plotly.js/issues/1668] [https://github.com/ropensci/plotly/issues/1262]即使使用ggplot(高度可定制)和ggplotly(对plotly 的封装),最终也只会产生一个传奇。
library(ggplot2); library(dplyr); library(magrittr);
final <- read.table(header = T, text =
"agebuilding violationstotal INdexrehabless6 totalvalue
32 5 0 350000
120 15 1 50000
100 25 1 100000
32 31 0 210000
33 9 0 150000
50 20 0 301000
15 28 0 175000
70 18 1 125000");
final;
agebuilding violationstotal INdexrehabless6 totalvalue
1 32 5 0 350000
2 120 15 1 50000
3 100 25 1 100000
4 32 31 0 210000
5 33 9 0 150000
6 50 20 0 301000
7 15 28 0 175000
8 70 18 1 125000
#plots the ggplot in `plot` window. 1st GRAPH
ggplot(data = final, aes(x = agebuilding, y = violationstotal)) +
geom_point(aes(size = totalvalue, color = INdexrehabless6))
# plots the ggploty in viewer window. 2nd GRAPH (interactive)
ggp %>% ggplotly();
第一张图
第二张图
【讨论】:
我明白了,谢谢你的回答@massisenergy。希望plotly能想出一个办法来做到这一点。我可以通过使用 ggplot2 来实现它,然后让它在 plotly 中交互。虽然最好在 plotly 本身中启用该选项,这样我就可以通过 plotly 对细节进行更多控制以上是关于如何使用 plotly 在散点图中显示第三个变量的第二个图例?的主要内容,如果未能解决你的问题,请参考以下文章
[散点图][Plotly][Python] 如何在散点图中标记心形
R语言可视化散点图(scatter plot)并在散点图中叠加回归曲线叠加lowess拟合曲线(linear and lowess fit lines)使用plotlineabline函数
R语言plotly可视化:plotly可视化在散点图中添加误差条(Scatterplot with Error Bars with plotly in R)
R语言plotly可视化:plotly可视化在散点图中添加误差条(Line Graph with Error Bars with plotly in R)