2017-10-19 6 views
1

私はR Plotにチェスシンボルを表示しようとしています。私はインターネット上で多くを検索しましたが、答えを見つけることができませんでした。Rプロットにチェス(ユニコード)記号を表示する方法は?

symbols <- data.frame(c(1,2,3,4,5,6,7,8),c(2,2,2,2,2,2,2,2),rep("\U2654", times=8)) 
symbols_w <- data.frame(c(1,2,3,4,5,6,7,8),c(7,7,7,7,7,7,7,7),rep("\U25a0", times=8)) 
colnames(symbols) <-c("xPos", "yPos", "unicode") 
colnames(symbols_w) <-c("xPos", "yPos", "unicode") 
symbols$unicode <- as.character(symbols$unicode) 
symbols_w$unicode <- as.character(symbols_w$unicode) 
chess_field + 
geom_text(data = symbols, aes(x=xPos, y=yPos, label=unicode), size = 11, color = "gray20", alpha = 0.7) + 
geom_text(data = symbols_w, aes(x=xPos, y=yPos, label=unicode), size = 11, color = "white", alpha = 0.7) 

私はここからチェスの数字にUnicodeを取る:https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode

私は、結果として、これらの写真を得た:それは*右の表示ばかりじゃない enter image description here

、多分あなたは私を助けることができますか?

EDIT

unicode <- rchess:::.chesspiecedata() %>% select(unicode) 
uni <- as.character(unicode[1,]) 
symbols <- data.frame(c(1,2,3,4,5,6,7,8),c(2,2,2,2,2,2,2,2),rep(uni, times=8)) 

enter image description here

EDIT 2

dfboard <- rchess:::.chessboarddata() %>% select(cell, col, row, x, y, cc) 
chess_field <- ggplot() + geom_tile(data = dfboard, aes(x, y, fill = cc)) + 
scale_fill_manual("legend", values = c("chocolate4", "wheat1")) + 
scale_x_continuous(breaks = 1:8, labels = letters[1:8]) + 
scale_y_continuous(breaks = 1:8, labels = 1:8) 

これはチェス盤を作成する方法です。私がライン+テーマ(text = element_text(family = "Arial Unicode MS"))を追加すると、 "Invalid font type"というエラーが出る... grid.call.graphicsのエラー(L_text、ad.graphicsAnnot(x $ラベル)、Xの$ xにはx $ yを

私は

+0

あなたは[この](http://jkunst.com/rchess/)を見たことがありますか?または[これ](http://jkunst.com/r/visualizingches-chess-data-with-ggplot/)? –

+0

ありがとう!私は私の答えを編集しました。私は前に両方のサイトを見てきました。私はパッケージからUnicodeを転送しますが、まだ動作しません。 – Lennie

+0

残念ながら、再現可能な例は提供していません( 'chess_field'はどこにも定義されていません)。あなたが使用しているフォントファミリがユニコードのチェス文字をサポートしていることを確認する必要があります。下の私の例を見てください。 –

答えて

1

は必ずフォントファミリは、そのことを確認してください...それだけでいくつかのUnicodeのシンボルのために、私に4時間かかったこの含めて、これはそれほど難しいことではないだろうと思いましたあなたは、Unicodeチェスの文字サポートを使用している。

は、たとえば次の例では、正しく騎士記号が表示されません。

gg <- ggplot(); 
gg <- gg + ggtitle(sprintf("\u265e")); 

enter image description here

ただし、フォントファミリをArial Unicode MSに変更すると、シンボルが正しく表示されます。

gg <- ggplot(); 
gg <- gg + theme(text = element_text(family = "Arial Unicode MS")); 
gg <- gg + ggtitle(sprintf("\u265e")); 

enter image description here

関連する問題