質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

ggplot2

ggplot2は、統計解析向けのプログラミング言語及びその開発実行環境であるR言語のグラフィック作成用のライブラリです。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

1194閲覧

Shiny-serverでの日本語の文字化けについて

marohati51

総合スコア10

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

ggplot2

ggplot2は、統計解析向けのプログラミング言語及びその開発実行環境であるR言語のグラフィック作成用のライブラリです。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2018/08/08 02:21

実現したいこと

RにおいてShinyを使って,reactiveなシステムを書いています。エリアを選んで,天気別の日数をggplot2でグラフ化して表示させる以下のようなシステムです(実際の日数とかは架空のデータです)。ローカル環境で実行してみると,問題なく表示されます。
イメージ説明

発生している問題

しかし,サーバー(CentOs,shiny-server)にアップロードして実行すると,以下のようにggplot2でグラフ化した部分の日本語のみが文字化けしています(サイドバーの日本語は文字化けしません)。これは,フォントファミリーの問題ではなく,文字コードの問題なのではないかと思いますが(4桁の英数字で表現されるのはUTF-16でしょうか?),どうすればggplot2の日本語表示がうまくいくのかがどうしてもわかりません(フォントファミリーをelement_textなどで明記しても問題は変わらないので,やはり文字コードの問題だと思われます)。

イメージ説明

RのsessionInfo

ローカル

R version 3.3.3 (2017-03-06)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS 10.13.6

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] stringi_1.1.5 bindrcpp_0.2 shinycssloaders_0.2.0 dplyr_0.7.4
[5] ggplot2_2.2.1 shiny_1.0.3 RMySQL_0.10.13 DBI_1.0.0

loaded via a namespace (and not attached):
[1] Rcpp_0.12.16 bindr_0.1 magrittr_1.5 munsell_0.4.3 colorspace_1.3-2
[6] xtable_1.8-2 R6_2.2.2 rlang_0.1.6 plyr_1.8.4 tools_3.3.3
[11] grid_3.3.3 gtable_0.2.0 sourcetools_0.1.6 htmltools_0.3.6 lazyeval_0.2.1
[16] digest_0.6.13 assertthat_0.2.0 tibble_1.4.2 glue_1.2.0 mime_0.5
[21] labeling_0.3 pillar_1.1.0 scales_0.5.0 jsonlite_1.5 httpuv_1.3.3
[26] pkgconfig_2.0.1

サーバー

R version 3.5.0 (2018-04-23)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.10 (Final)

Matrix products: default
BLAS: /usr/lib64/R/lib/libRblas.so
LAPACK: /usr/lib64/R/lib/libRlapack.so

locale:
[1] LC_CTYPE=ja_JP.UTF-8 LC_NUMERIC=C
[3] LC_TIME=ja_JP.UTF-8 LC_COLLATE=ja_JP.UTF-8
[5] LC_MONETARY=ja_JP.UTF-8 LC_MESSAGES=ja_JP.UTF-8
[7] LC_PAPER=ja_JP.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=ja_JP.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0

補足

他に必要な情報があれば,ご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2018/08/09 03:49

CentOS上で日本語を含む簡単なグラフをゼロから作ってみた場合でも文字化けしますか? ggplot2に渡すデータを持っているオブジェクトをstr関数に与えて中身を見たとき、日本語部分はまともに表示されていますか?
marohati51

2018/08/09 05:53 編集

ご教示ありがとうございます。確認方法があってるかどうかやや怪しいですが,ggplot2に渡すデータは文字化けしていないようです。が,ggplotにデータを渡したあとグラフ化すると,,, In grid.Call(C_textBounds, as.graphicsAnnot(x$label), ... : 'mbcsToSbcs' 中の '日数' で変換に失敗: <e6> をドットで置き換えました というようなエラーが50件以上出ていました。ここに問題がありそうです。
guest

回答1

0

ベストアンサー

文字コードの問題ではなくフォントファミリーの問題に見えますね。
たぶん描画されているのは正しいUnicode番号です。文字コードは正しく渡っているのでしょう。
四角に文字コードが書かれたものはフォントに当該文字(グリフ)が無い時の表示として一般的です。
単純にサーバーに日本語フォントが無い、あるいは認識されていないのではないでしょうか。

投稿2018/08/10 02:54

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marohati51

2018/08/10 02:59

ご回答ありがとうございます。再度確認しようと思いますが,文字化けしていないサイドバーの日本語と,ggplotで文字化けしている日本語とは,同じフォントファミリーを指定しています。ggplotは別のところからフォントを読み込むこともあったりするのでしょうか?ひとまず,もう一度確認してみます。ありがとうございます。
ikadzuchi

2018/08/10 03:26

環境をよく分かっていないのですが、右側のグラフは画像としてサーバー側で描画され、左側のUIは文字情報として送られローカルで描画されているのではないでしょうか。
marohati51

2018/08/10 04:33

な,なるほど。そのような考え方は思いつきませんでした。サーバー側の日本語フォントをちょっと確認してみます。
marohati51

2018/08/10 04:50

フォントファミリーの指定を削除してみましたら,無事に日本語が表示されました!大変わかりやすいご指摘,ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問