Skip to content

Instantly share code, notes, and snippets.

@kota7
Last active September 7, 2021 17:04
Show Gist options
  • Save kota7/d7cadcc30c571ed9c128b4e597051aed to your computer and use it in GitHub Desktop.
Save kota7/d7cadcc30c571ed9c128b4e597051aed to your computer and use it in GitHub Desktop.
Make R's ggplot2 graph on Juypter Python kernel.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"id": "837f2e32-ec0a-4808-8119-f5955507f7ba",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import subprocess\n",
"from tempfile import TemporaryDirectory\n",
"from IPython.display import Image\n",
"\n",
"def ggplot(plotcode, libs=(\"magrittr\", \"ggplot2\"),\n",
" dispwidth=None, dispheight=None,\n",
" width=None, height=None,\n",
" showcode=False, **dataframes):\n",
" with TemporaryDirectory() as tmpdir:\n",
" importcode = \";\".join(f\"library({l})\" for l in libs)\n",
" readcode = []\n",
" for name, df in dataframes.items():\n",
" filename = os.path.join(tmpdir, f\"__data_{name}.csv\")\n",
" df.to_csv(filename, index=False)\n",
" readcode.append(f\"{name} <- read.csv('{filename}', as.is=TRUE)\")\n",
" readcode = \";\".join(readcode)\n",
" \n",
" graphfile = os.path.join(tmpdir, \"__graph.png\")\n",
" if width is None:\n",
" width = \"NA\"\n",
" if height is None:\n",
" height = \"NA\"\n",
" code = f\"\"\"\n",
" {importcode}\n",
" {readcode}\n",
" ..g <- {{\n",
" {plotcode}\n",
" }}\n",
" ggsave(\"{graphfile}\", ..g, width={width}, height={height})\n",
" \"\"\"\n",
" if showcode:\n",
" print(code)\n",
" subprocess.run([\"Rscript\", \"-e\", code])\n",
" \n",
" display(Image(filename=graphfile, width=dispwidth, height=dispheight))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a9a8e31c-654f-4911-9e6b-cdf916167ac5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {
"image/png": {
"width": 640
}
},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"df = pd.DataFrame({\"x\": np.linspace(-10, 10, 100)})\n",
"df[\"y\"] = np.sin(df.x)\n",
"\n",
"df2 = pd.DataFrame({\"x\": np.linspace(-10, 10, 100)})\n",
"df2[\"y\"] = 1.2*np.cos(0.6*df2.x)\n",
"\n",
"ggplot(\n",
" \"\"\"\n",
" ggplot(dat, aes(x=x, y=y)) +\n",
" geom_line() +\n",
" geom_line(aes(x=x, y=y), data=dat2, linetype=\"dotted\") +\n",
" theme_bw()\n",
" \"\"\",\n",
" dat=df, dat2=df2, \n",
" width=4, height=2, dispwidth=640)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "91618365-bc82-47ed-a305-572d143c1f6e",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment