はじめに
pandasのデータフレームと連携する形での記述。
最近確実に需要のない記事ばっかり、、(;´Д`)
環境
- windows10
- python 3.9.4
- R 4.12
pip
pip install pyper
R(package)
install.packages("ggplot2")
install.packages("shiny", dependencies = TRUE)
※何らかの形でggplot2とshinyをインストールすればよいかと
※shinyはbase64のエンコードに必要
コード
import pyper
import numpy
import pandas
# ランダムデータフレーム作成
n = 100
randomArray = numpy.random.normal(0, 10, n)
df = pandas.DataFrame({"xData": randomArray})
# Rの実行オブジェクト作成
r = pyper.R()
# pandasのオブジェクトをRで扱えるようにする
r = pyper.R(use_pandas="True")
# 作成したデータフレームを設定
r.assign("p_df", df)
r(
"""
# ライブラリインポート
library(ggplot2)
library(shiny)
# グラフのプロットデータ作成
p <- ggplot(data = p_df,
mapping = aes(x=xData)) +
geom_density(fill = "gold")
# 画像出力(サイズは dpi*width × dpi*height のピクセルサイズとなる)
ggsave(filename = "sample.png",
plot = p,
device = "png",
width = 6.4, height = 4.8,
dpi = 100)
# base64変換
b64image <- base64enc::dataURI(file = "sample.png", mime = "image/png")
"""
)
# Rで変換した内容を取得
res = r.get("b64image")
# とりあえずは標準出力
print(res)
終わりに
shinyはbase64encだけ実行できれば良いとは思うんだけど、やたらサイズがデカい、、細かくパッケージインストールする方法とかbase64エンコードできるほかのパッケージとかあるかも、、