2017-10-05 6 views
1

でカスタムアイコンを使用します以下のように見えるチャート:は今、私はパイを使用して性別情報を表示していますのとおり代わりに通常のパイ部門</p> <p>のplotlyの円グラフのためのカスタムアイコンを持つ方法があります場合、私は思っていたplotlyの円グラフ

enter image description here

私はそれは下のリンクで男女のプロットのように見えるようにしようとしている:

https://app.displayr.com/Dashboard?id=c1506180-fe64-4941-8d24-9ec4a54439af#page=3e133117-f3b2-488b-bc02-1c2619cf3914

enter image description here

plotlyコードは下の通りである:plotly使用していないが使用して情報を表示するために使用することができる任意の他のライブラリがある場合

Gender Freq 
    F 70 
    M 65 

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')) 

genderselectionのデータフレームカスタムアイコン?

答えて

2

(1)可能なPNGファイルhereをダウンロードして自分の作業ディレクトリに保存しman_woman.png
(2)次のコードを実行します。

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 

enter image description here

+0

これはまさに私が探していたものをために ! ありがとう! 背景を白に変更し、色を塗りつぶす方法はありますか? 私はあなたがパーセンテージに応じて異なる色で体を塗りつぶしているのを見ますが、それはデフォルトで塗りつぶした色を取りますか?私たちの選択に従って色を定義できますか? –

+1

@DollarVoraここでは、プロットするヒートマップのカラーパレットを制御する方法を見つけることができます:https://stackoverflow.com/questions/44918709/how-to-generate-a-custom-color-scale-for-plotly-ヒートマップ –

関連する問題