我试图制作一个气泡图,其中每种颜色代表不同的珊瑚种类代码,气泡的大小代表个体的大小(以米为单位),但也缩放到x或y轴,它们也按比例缩放米.
我还想为我目前plotly在R中使用的个人的大小添加一个额外的图例,但是可以使用R或Python中的其他模块.
我已经能够通过物种相对容易地获得颜色,但我正在努力按尺寸缩放气泡.有没有人以前做过这个或知道任何作弊才能让它发挥作用?
#Example Data
Species <- c('SSID','PAST','CNAT','SSID','MMEA','PAST')
Dist <- c(7.1,4.0,6.4,8.0,8.1,8.9)
XDist <- runif(6, 0.0, 1.0)
Transect <- c(1,2,1,1,3,2)
Width <- c(10,15,100,45,60,27)
Data <- data.frame(Transect, Species, Dist, XDist, Width)
XDist <- Data$Transect - 1
Data$XDist <- Data$XDist + XDist
library(plotly)
k <- plot_ly(Data, x = ~XDist, y = ~Dist, type = 'scatter', mode =
'markers',
size = ~Width ,marker = list(sizemode = 'diameter', opacity = 1,
symbol = ifelse(data$Disease == 'Y', "circle-open", "circle"),
line = list(width = 5)),
color = ~Species, colors = 'Set1',
hoverinfo = 'text',
text = ~paste('Width:', Width, '<br>Species:', Species)
) %>%
layout(title = 'Coral',
xaxis = list(showgrid = FALSE),
yaxis = list(showgrid = FALSE))
Run Code Online (Sandbox Code Playgroud)

经过深思熟虑和找到一对卡钳,我想我已经回答了我自己的问题.假设宽度= 1000且高度= 1000,我的图上100厘米= 3.72毫米.Plotly似乎根据最大气泡和最小气泡的大小来缩放气泡.默认尺寸上最大的气泡为2.45mm,最小气泡为0.21 mm.您可以使用这些测量值创建比率,将气泡绝对缩放到距离.
#Data
Species <- c('SSID','PAST','CNAT','SSID','MMEA','PAST')
Coral <- c(1,2,3,4,5,6)
Dist <- c(1,2.4,4.6,3.2,1.2,4.1)
XDist <- c(2,3,0.5,2.3,4.1,2.5)
Transect <- c(1,2,1,1,3,2)
Width <- c(10,15,100,45,60,27)
Disease <- c(0,0,0,1,0,0)
Data <- data.frame(Coral, Transect, Species, Dist, XDist, Width, Disease)
Datamax <- (((max(Data$Width, na.rm = T)*3.72)/100)/2.45)*100
Datamin <- (((min(Data$Width, na.rm = T)*3.72)/100)/0.21)*10
k <- plot_ly(Data, x = ~XDist, y = ~Dist, type = 'scatter',
mode ='markers',
size = ~Width ,marker = list(sizemode = 'diameter', opacity = 0.75,
symbol = ifelse(Data$Disease == 1, "circle-open", "circle"),
line = list(width = 10)),
color = ~Species, colors = 'Set1',
hoverinfo = 'text',
text = ~paste('Width:', Width, '<br>Species:', Species),
width = 1000,
height = 1000,# ) %>%
sizes = c(Datamin,Datamax)) %>%
add_annotations(text = Data$Coral,
xanchor = 'center', showarrow = F) %>%
layout(title = 'Coral',
xaxis = list(showgrid = TRUE,
range = c(-0.25,5.25),
zeroline = T,
showline = T,
mirror = "ticks",
gridcolor = toRGB("grey50"),
gridwidth = 2),
yaxis = list(showgrid = FALSE,
scaleanchor = "x",
rangemode = "nonnegative"))
k
export(k,file = "Test.CoralMap.png")
Run Code Online (Sandbox Code Playgroud)