问题描述
我想知道是否有一种方法可以为plotly的饼图而不是通常的饼图部门制作自定义图标。
截至目前,我正在显示性别信息使用如下图所示的饼图:
我试图让它看起来像以下链接中的性别图:
剧情代码是as根据:
plot_ly(genderselection,labels =〜Gender,values =〜Freq,type ='pie')%>%
layout(title = paste0(波士顿患者性别分布),
xaxis = list(showgrid = FALSE,zeroline = FALSE,showticklabels = FALSE),
yaxis = list(showgrid = FALSE,zeroline = FALSE,showticklabels = FALSE),
legend = list(orientation ='h'))
性别选择数据框:
性别频率
F 70
M 65
如果不使用绘图,是否有任何其他库可用于使用自定义图标显示信息?
I was wondering if there's a way to have a custom icon for plotly's pie chart instead of the usual pie division
As of now I'm displaying the gender information using a pie chart which looks as below:
I'm trying to make it look like the gender plot in the link below:
The plotly code is as under:
plot_ly(genderselection, labels = ~Gender, values = ~Freq, type = 'pie') %>%
layout(title = paste0("Gender Distribution of Patients from Boston"),
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
legend=list(orientation='h'))
The genderselection dataframe:
Gender Freq
F 70
M 65
If not using plotly is there any other library that can be used to display information using custom icons ?
(1) Download the png file available here and save it in your working directory as man_woman.png
(2) Run the following code:
library(png)
library(plotly)
genderselection <- read.table(text="
Gender Freq
F 70
M 30
", header=T)
pcts <- round(prop.table(genderselection$Freq)*100)
# Load png file with man and woman
img <- readPNG("man_woman.png")
h <- dim(img)[1]
w <- dim(img)[2]
# Find the rows where feet starts and head ends
pos1 <- which(apply(img[,,1], 1, function(y) any(y==1)))
mn1 <- min(pos1)
mx1 <- max(pos1)
pospctM <- round((mx1-mn1)*pcts[2]/100+mn1)
pospctF <- round((mx1-mn1)*pcts[1]/100+mn1)
# Fill bodies with a different color according to percentages
imgmtx <- img[h:1,,1]
whitemtx <- (imgmtx==1)
colmtx <- matrix(rep(FALSE,h*w),nrow=h)
midpt <- round(w/2)-10
colmtx[mx1:pospctM,1:midpt] <- TRUE
colmtx[mx1:pospctF,(midpt+1):w] <- TRUE
imgmtx[whitemtx & colmtx] <- 0.5
# Plot matrix using heatmap and print text
labs <- c(paste0(pcts[2], "% Males"),paste0(pcts[1], "% Females"))
ax <- list(ticks='', showticklabels=FALSE, showgrid=FALSE, zeroline=FALSE)
p <- plot_ly(z = imgmtx, showscale=FALSE, type='heatmap', width = 500, height = 500) %>%
add_text(x = c(100,250), y = c(20,20), type='heatmap', mode="text",
text=labs, showlegend=FALSE, textfont=list(size=20, color="#FFFFFF"), inherit=FALSE) %>%
layout(xaxis = ax, yaxis = ax)
p
这篇关于在plotly的饼图中使用自定义图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!