sage/RグラフィックスクックブックをSageで試してみる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2014/03/22からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/39/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
** RグラフィックスクックブックをSageで試してみる [#lf2eae...
[[Rグラフィックスクックブック ―ggplot2によるグラフ作成の...
にでている例題をpython版ggplotで試し、ggplotでサポートし...
Sageでデータをプロットするときに参考にしてください。
sageへの入力:
#pre{{
# Rの必要なライブラリ
#r("install.packages('ggplot2')")
r('library(ggplot2)')
#r("install.packages('gcookbook')")
r('library(gcookbook)')
# RUtilでjsonliteを使用するため、未インストールならインス...
#r("install.packages('jsonlite')")
# Pythonパッケージのインポート
import pandas as pd
import numpy as np
from ggplot import *
# RUtilにRとPandasのデータフレームを相互に変換する関数を...
load(DATA + 'RUtil.py')
}}
*** 連続値をカテゴリに変換する [#y77dcd6f]
Pandasを使って連続値の区間で区切って処理する方法の紹介で...
sageへの入力:
#pre{{
age = np.array([20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 4...
sex = np.array(['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', '...
df = pd.DataFrame({'age': age, 'sex': sex})
df
}}
#pre{{
age sex
0 20 F
1 22 M
2 25 M
3 27 M
4 21 F
5 23 M
6 37 F
7 31 M
8 61 F
9 45 M
10 41 F
11 32 M
[12 rows x 2 columns]
}}
sageへの入力:
#pre{{
# カテゴリ分けする区切り値
bins = [18, 25, 35, 60, 100]
cat_names = ['youth', 'YoungAdult', 'MiddleAged', 'Senior']
df['bins'] = pd.cut(df.age, bins, labels=cat_names)
df.head()
}}
#pre{{
age sex bins
0 20 F youth
1 22 M youth
2 25 M youth
3 27 M YoungAdult
4 21 F youth
[5 rows x 3 columns]
}}
** ここからプロット例 [#g9269734]
sageへの入力:
#pre{{
# gcookbookのサンプルデータからheightweightを取得する
heightweight = RDf2PandaDf("heightweight")
heightweight.head()
}}
#pre{{
ageMonth ageYear heightIn sex weightLb
0 143 11.92 56.3 f 85.0
1 155 12.92 62.3 f 105.0
2 153 12.75 63.3 f 108.0
3 161 13.42 59.0 f 92.0
4 191 15.92 62.5 f 112.5
[5 rows x 5 columns]
}}
sageへの入力:
#pre{{
heightweight.tail()
}}
#pre{{
ageMonth ageYear heightIn sex weightLb
231 164 13.67 66.5 m 112.0
232 189 15.75 65.0 m 114.0
233 164 13.67 61.5 m 140.0
234 167 13.92 62.0 m 107.5
235 151 12.58 59.3 m 87.0
[5 rows x 5 columns]
}}
sageへの入力:
#pre{{
# Rec.2.1 散布図を作成する
ggplot(mtcars, aes(x='wt', y='mpg')) + geom_point()
}}
#pre{{
<ggplot: (8125969)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.1.png);
sageへの入力:
#pre{{
# Rec.2.2 折れ線グラフを作成する
# 単純なデータなら以下の様にRから持ってくることもできる
pressure = pd.DataFrame(sageobj(r('pressure'))['DATA'])
pressure.head()
}}
#pre{{
pressure temperature
0 0.0002 0
1 0.0012 20
2 0.0060 40
3 0.0300 60
4 0.0900 80
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(pressure, aes(x='temperature', y='pressure')) +geo...
}}
#pre{{
<ggplot: (8165273)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.2.png);
sageへの入力:
#pre{{
# Rec.2.3 棒グラフを作成する
# cylは連続値なので、factorで離散として扱う
ggplot(mtcars, aes(x='factor(cyl)')) +geom_bar()
}}
#pre{{
<ggplot: (8361829)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.3.png);
sageへの入力:
#pre{{
# Rec.2.4 ヒストグラムを作成する
ggplot(mtcars, aes(x='mpg')) + geom_histogram(binwidth='4')
}}
#pre{{
<ggplot: (8371409)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.4.png);
sageへの入力:
#pre{{
# Rの結果と異なる!
graph = preGraph("fig2.4.png")
r('p <- ggplot(mtcars, aes(x=mpg)) + geom_histogram(binwi...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.4.png);
sageへの入力:
#pre{{
# ToothGrowthデータをRから持ってくる
ToothGrowth = RDf2PandaDf('ToothGrowth')
ToothGrowth.head()
}}
#pre{{
dose len supp
0 0.5 4.2 VC
1 0.5 11.5 VC
2 0.5 7.3 VC
3 0.5 5.8 VC
4 0.5 6.4 VC
[5 rows x 3 columns]
}}
sageへの入力:
#pre{{
# Rec.2.5 箱ひげ図を作成する
# geom_boxplotはまだ実装されていないみたい
# ggplot(ToothGrowth, aes(x='interaction(supp, dose)', y=...
}}
sageへの入力:
#pre{{
#ggsave('Rec.2.4.png', dpi=50)
}}
sageへの入力:
#pre{{
graph = preGraph("fig2.5.png")
r('p <- ggplot(ToothGrowth, aes(x=interaction(supp, dose)...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.5.png);
sageへの入力:
#pre{{
# Rec.2.6 関数曲線をプロットする
# stat_functionはまだ実装されていないみたい
graph = preGraph("fig2.6.png")
r('myfun <- function(xvar){ 1/(1 + exp(-xvar + 10)) }')
r('p <- ggplot(data.frame(x=c(0, 20)), aes(x=x)) + stat_f...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.6.png);
sageへの入力:
#pre{{
# Rec.3.1 棒グラフを作成する
pg_mean = pd.DataFrame({'group':['ctrl', 'trt1', 'trt2'],...
pg_mean.head()
}}
#pre{{
group weight
0 ctrl 5.03200000000000
1 trt1 4.66100000000000
2 trt2 5.52600000000000
[3 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8711265)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.1.png);
sageへの入力:
#pre{{
# R版と指定方法が異なるので
graph = preGraph("fig3.1.png")
r('p <- ggplot(pg_mean, aes(x=group, y=weight)) + geom_ba...
r('plot(p)')
postGraph(graph)
}}
&ref(fig3.1.png);
sageへの入力:
#pre{{
# Fig3-2
BOD = RDf2PandaDf("BOD")
BOD.head()
}}
#pre{{
Time demand
0 1 8.3
1 2 10.3
2 3 19.0
3 4 16.0
4 5 15.6
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
# ggplotの場合、factor(Time)のようにプロットされる
ggplot(BOD, aes(x='Time', weight='demand')) + geom_bar(st...
}}
#pre{{
<ggplot: (8711273)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.2a.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.2a.png);
sageへの入力:
#pre{{
ggplot(BOD, aes(x='factor(Time)', weight='demand')) + geo...
}}
#pre{{
<ggplot: (8836749)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.2b.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.2b.png);
sageへの入力:
#pre{{
# Fig3-3
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8980677)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.3.png);
sageへの入力:
#pre{{
# Rec.3.2 棒をグループ化する
cabbage_exp = pd.DataFrame({'Cultivar': ['c39', 'c39', 'c...
cabbage_exp
}}
#pre{{
Cultivar Date Weight
0 c39 d16 3.18000000000000
1 c39 d20 2.80000000000000
2 c39 d21 2.74000000000000
3 c52 d16 2.26000000000000
4 c52 d20 3.11000000000000
5 c52 d21 1.47000000000000
[6 rows x 3 columns]
}}
sageへの入力:
#pre{{
# 横並びができない。d20の積み重ねの色が変?
#ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weight...
ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weight'...
}}
#pre{{
<ggplot: (8710225)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.2.png);
sageへの入力:
#pre{{
# Rec.3.2 棒をグループ化
graph = preGraph("fig3.4.png")
r('p <- ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cu...
r('plot(p)')
postGraph(graph)
}}
&ref(fig3.4.png);
sageへの入力:
#pre{{
# Rec.3.3 個数を示す棒グラフを作成する
ggplot(diamonds, aes(x='cut')) + geom_bar()
}}
#pre{{
<ggplot: (9117985)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.3.png);
sageへの入力:
#pre{{
# Rec.3.4 色つきの棒グラフを作成する
r('upc <- subset(uspopchange, rank(Change)>40)')
graph = preGraph("Rec.3.4.png")
r('p <- ggplot(upc, aes(x=Abb, y=Change, fill=Region)) + ...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.4.png);
sageへの入力:
#pre{{
# Rec.3.5 棒の正負によって色を塗り分ける
# 値が正か負を示すpos列をデータフレームに追加する
r('csub <- subset(climate, Source=="Berkeley" & Year >= 1...
r('csub$pos <- csub$Anomaly10y >= 0')
r('head(csub)')
}}
#pre{{
Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y ...
101 Berkeley 1900 NA NA -0.171 0.108 F...
102 Berkeley 1901 NA NA -0.162 0.109 F...
103 Berkeley 1902 NA NA -0.177 0.108 F...
104 Berkeley 1903 NA NA -0.199 0.104 F...
105 Berkeley 1904 NA NA -0.223 0.105 F...
106 Berkeley 1905 NA NA -0.241 0.107 F...
}}
sageへの入力:
#pre{{
graph = preGraph("Rec.3.5.png")
r('p <- ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos))...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.5.png);
sageへの入力:
#pre{{
# Rec.3.6 棒の幅と間隔を調整する
# 最大の幅1.0
# 指定が効かない
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8826161)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.6.png);
sageへの入力:
#pre{{
# Rec.3.7 積み上げ棒グラフを作成する
graph = preGraph("Rec.3.7.png")
r('p <- ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cu...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.7.png);
sageへの入力:
#pre{{
# Rec.3.8 100%積み上げ棒グラフ(Practical Data Science版)
graph = preGraph("Rec.3.8.png")
r('p <- ggplot(cabbage_exp) + geom_bar(aes(x=Date, y=Weig...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.8.png);
sageへの入力:
#pre{{
# Rec.3.9 棒グラフにラベルを追加する vjustでラベルの位置...
# python版はダメ
# ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weigh...
graph = preGraph("Rec.3.9.png")
r('p <- ggplot(cabbage_exp, aes(x=interaction(Date, Culti...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.9.png);
sageへの入力:
#pre{{
#ggsave('Rec.3.9.png', dpi=50)
}}
sageへの入力:
#pre{{
# geom_textは実装されているが、文字列のプロットのみをサポ...
ggplot(aes(x='wt', y='mpg', label='name'), data=mtcars) + \
geom_text()
}}
#pre{{
<ggplot: (8987329)>
}}
sageへの入力:
#pre{{
ggsave('test1.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(test1.0.png);
sageへの入力:
#pre{{
# Rec.3.10 クリーブランドのドットプロットを作成する
r('tophit <- tophitters2001[1:25,]') # tophitters2001...
graph = preGraph("Rec.3.10.png")
r('p <- ggplot(tophit, aes(x=avg , y=name)) + geom_point(...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.10.png);
sageへの入力:
#pre{{
# PDSの手法で、X軸とY軸を入れ替えてみる
graph = preGraph("fig-3.29.png")
r('p <- ggplot(tophit, aes(x=avg , y=name)) + geom_point(...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-3.29.png);
sageへの入力:
#pre{{
# Rec.4.1 基本的な折れ線グラフを作成する(Python版)
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line()
}}
#pre{{
<ggplot: (9320477)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.1.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.1.0.png);
sageへの入力:
#pre{{
# Rec4.2 折れ線グラフに点を追加する(Python版)
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line() + geom_point()
}}
#pre{{
<ggplot: (9824733)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.2.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.2.0.png);
sageへの入力:
#pre{{
# Y軸を対数表示を加える(Python版)
worldpop = RDf2PandaDf("worldpop")
}}
sageへの入力:
#pre{{
ggplot(worldpop, aes(x='Year', y='Population')) + \
geom_line() + geom_point() + scale_y_log()
}}
#pre{{
<ggplot: (9329829)>
}}
sageへの入力:
#pre{{
ggsave('fig-4.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-4.5.png);
sageへの入力:
#pre{{
# Rec.4.3 複数の線を持つ折れ線グラフを作成する(Python版)
r('library(plyr)')
# ToothGrowthデータを要約する
r('tg <- ddply(ToothGrowth, c("supp", "dose"), summarise,...
}}
#pre{{
supp dose length
1 OJ 0.5 13.23
2 OJ 1.0 22.70
3 OJ 2.0 26.06
4 VC 0.5 7.98
5 VC 1.0 16.77
6 VC 2.0 26.14
}}
sageへの入力:
#pre{{
tg = RDf2PandaDf("tg")
}}
sageへの入力:
#pre{{
ggplot(tg, aes(x='dose', y='length', colour='supp')) + \
geom_line()
}}
#pre{{
<ggplot: (9823801)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.3.png);
sageへの入力:
#pre{{
# Rec.4.4 線の体裁を変更する(Python版) Rではlinetypeで線...
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line(linestyle="dashed", color="blue")
}}
#pre{{
<ggplot: (10373117)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.4.png);
sageへの入力:
#pre{{
# Rec.4.5 点の体裁を変更する(Python版) R版とはsizeの単位...
ggplot(BOD, aes(x='Time', y='demand')) + geom_line() + \
geom_point(size=100, color="darkred")
}}
#pre{{
<ggplot: (10838649)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.5.png);
sageへの入力:
#pre{{
# Rec.4.6 網掛け領域付きのグラフを作成する (Python版未完...
r('sunspotyear <- data.frame(Year = as.numeric(time(sunsp...
sunspotyear = RDf2PandaDf('sunspotyear'); sunspotyear.hea...
}}
#pre{{
Sunspots Year
0 5 1700
1 11 1701
2 16 1702
3 23 1703
4 36 1704
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(sunspotyear, aes(x="Year", y="Sunspots")) + geom_l...
}}
#pre{{
<ggplot: (10382145)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.6.png);
sageへの入力:
#pre{{
# R版
graph = preGraph("fig-4.17.png")
r('p <- ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + ge...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.17.png);
sageへの入力:
#pre{{
# Rec.4.7 積み上げ面グラフを作成する(ダメ)
uspopage = RDf2PandaDf('uspopage'); print uspopage.head()
ggplot(uspopage, aes(x="Year", y="Thousands", fill="AgeGr...
}}
#pre{{
AgeGroup Thousands Year
0 <5 9181 1900
1 5-14 16966 1900
2 15-24 14951 1900
3 25-34 12161 1900
4 35-44 9273 1900
[5 rows x 3 columns]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
KeyError: 'ymin'
}}
sageへの入力:
#pre{{
ggsave('Rec.4.7.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.7.png);
sageへの入力:
#pre{{
# R版
graph = preGraph("fig-4.20.png")
r('p <- ggplot(uspopage, aes(x=Year, y=Thousands, fill=Ag...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.20.png);
sageへの入力:
#pre{{
# Rec.4.9 信頼区間の領域を追加する
# Anomaly10y: 1950~1980年までの平均気温からの偏差の10年移...
# Unc10y: 95%の信頼区間
r('clim <- subset(climate, Source == "Berkeley", select=c...
clim = RDf2PandaDf('clim')
}}
sageへの入力:
#pre{{
# 上限、下限の線で代用
up_line = pd.DataFrame({
'y': (clim.Anomaly10y + clim.Unc10y).tolist(),
'x': clim.Year.tolist()})
lw_line = pd.DataFrame({
'y': (clim.Anomaly10y - clim.Unc10y).tolist(),
'x': clim.Year.tolist()})
}}
sageへの入力:
#pre{{
ggplot(clim, aes(x="Year", y="Anomaly10y")) + \
geom_line() + \
geom_line(aes(x="x", y="y"), linestyle="dashed", colo...
geom_line(aes(x="x", y="y"), linestyle="dashed", colo...
}}
#pre{{
<ggplot: (11396593)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.9.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.9.png);
sageへの入力:
#pre{{
# R版 alpha指定が効かない
graph = preGraph("fig-4.25.png")
r('p <- ggplot(clim, aes(x=Year, y=Anomaly10y)) + geom_r...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.25.png);
sageへの入力:
#pre{{
# Rec.5.1 基本的な散布図を作成する
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (11405253)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.1.png);
sageへの入力:
#pre{{
# R5.2 色と形を使用してデータポイントをグループ化
ggplot(heightweight, aes(x="ageYear", y="heightIn", color...
}}
#pre{{
<ggplot: (10243605)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.4a.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.4a.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn", shape...
}}
#pre{{
<ggplot: (11561281)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.4b.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.4b.png);
sageへの入力:
#pre{{
# Rec.5.3 点の形を指定する
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
Traceback (most recent call last):
….
AttributeError: Unknown property shape
}}
sageへの入力:
#pre{{
# R版
graph = preGraph("Rec.5.3.png")
r('p <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) ...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.5.3.png);
sageへの入力:
#pre{{
# Rec.5.4 連続値変数を色やサイズにマッピングする
ggplot(heightweight, aes(x="ageYear", y="heightIn", colou...
}}
#pre{{
<ggplot: (11220169)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.4.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn", size=...
}}
#pre{{
<ggplot: (12021677)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.9.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.9.png);
sageへの入力:
#pre{{
# Rec.5.5 オーバープロットを扱う
ggplot(diamonds, aes('carat', 'price')) + \
geom_point(alpha=1/20.) + \
ylim(0, 20000)
}}
#pre{{
<ggplot: (11783761)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.5.png);
sageへの入力:
#pre{{
# Rec.5.6 回帰モデルの直線をフィットさせる
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (13715161)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.6.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (13566493)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.19.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.19.png);
sageへの入力:
#pre{{
# ggplotの例題だと上手く表示できている
meat_lng = pd.melt(meat[['date', 'beef', 'pork', 'broiler...
ggplot(aes(x='date', y='value', colour='variable'), data=...
geom_point() + \
stat_smooth(color='red')
}}
#pre{{
<ggplot: (12929917)>
}}
sageへの入力:
#pre{{
ggsave('sample1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(sample1.png);
sageへの入力:
#pre{{
# Rの結果は
graph = preGraph("fig-5.19-1.png")
r('p <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) ...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-5.19-1.png);
sageへの入力:
#pre{{
# glmでのスムーズ曲線
r('library(MASS)')
graph = preGraph("fig-5.20.png")
r('b <- biopsy')
r('b$classn[b$class == "benign"] <- 0')
r('b$classn[b$class == "malignant"] <- 1')
r('p <- ggplot(b, aes(x=V1, y=classn)) + geom_point(posit...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-5.20.png);
sageへの入力:
#pre{{
# 不要な散布図のレシピは省略
}}
sageへの入力:
#pre{{
# Rec.6.1 基本的なヒストグラムを作成する
faithful = RDf2PandaDf('faithful')
ggplot(faithful, aes(x="waiting")) + geom_histogram()
}}
#pre{{
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
<ggplot: (13745201)>
}}
sageへの入力:
#pre{{
ggsave('Rec.6.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.6.1.png);
sageへの入力:
#pre{{
# binwidth=5 と色を変更
ggplot(faithful, aes(x="waiting")) + geom_histogram(binwi...
}}
#pre{{
<ggplot: (13192921)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.2.png);
sageへの入力:
#pre{{
# Rec.6.2 グループ化されたデータから複数のヒストグラムを...
birthwt = RDf2PandaDf('birthwt')
ggplot(birthwt, aes(x="bwt")) + geom_histogram(color="gre...
}}
#pre{{
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
<ggplot: (13159925)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.4.png);
sageへの入力:
#pre{{
# Rec.6.3 密度曲線を作成する
ggplot(faithful, aes(x="waiting")) + geom_density()
}}
#pre{{
<ggplot: (14193865)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.3.png);
sageへの入力:
#pre{{
# Rec.6.4 グループ化されたデータから複数の密度曲線を作成...
ggplot(birthwt, aes(x="bwt", colour="factor(smoke)")) + g...
}}
#pre{{
<ggplot: (14393965)>
}}
sageへの入力:
#pre{{
ggsave('Rec.6.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.6.4.png);
sageへの入力:
#pre{{
# Rec.6.6 基本的な箱ひげ図を作成する
graph = preGraph("Rec.6.6.png")
r('p <- ggplot(birthwt, aes(x=factor(race), y=bwt)) + geo...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.6.6.png);
sageへの入力:
#pre{{
# Rec.6.12 2次元データから密度プロットを作成する
graph = preGraph("Rec.6.12.png")
r('p <- ggplot(faithful, aes(x=eruptions, y=waiting)) + g...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.6.12.png);
sageへの入力:
#pre{{
# Rec.9.3 テーマを使う
# ブラックとホワイトのテーマ
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (14404949)>
}}
sageへの入力:
#pre{{
ggsave('Rec.9.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.9.3.png);
sageへの入力:
#pre{{
# Rec.11.1 ファセットを使いサブプロットに分割する
mpg = RDf2PandaDf('mpg')
ggplot(mpg, aes(x="displ", y="hwy")) + geom_point() + fac...
}}
#pre{{
<ggplot: (14685905)>
}}
sageへの入力:
#pre{{
ggsave('Rec.11.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.11.1.png);
sageへの入力:
#pre{{
# R版では、水平、垂直パネルにも分割できる
graph = preGraph("fig-11.1.png")
r('p <- ggplot(mpg, aes(x=displ, y=hwy)) + geom_point()')
r('p <- p + facet_grid(drv ~ .)')
#r('p + facet_grid(. ~ cyl)')
#r('p + facet_grid(drv ~ cyl)')
r('plot(p)')
postGraph(graph)
}}
&ref(fig-11.1.png);
sageへの入力:
#pre{{
# 地図のプロット
# r('install.packages("mapproj")')
r('library(maps)')
}}
#pre{{
[1] "maps" "MASS" "plyr" "jsonlite" "gco...
[9] "grDevices" "utils" "datasets" "methods" "bas...
}}
sageへの入力:
#pre{{
# アメリカの地図データを取得
junk = r('states_map <- map_data("state")')
}}
sageへの入力:
#pre{{
r('class(states_map)')
graph = preGraph("fig-13.32.png")
r('p <- ggplot(states_map, aes(x=long, y=lat, group=group...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-13.32.png);
sageへの入力:
#pre{{
# 世界地図から日本と韓国、中国をプロット
r('world_map <- map_data("world")')
junk = r('east_asia <- map_data("world", region=c("Japan"...
}}
sageへの入力:
#pre{{
graph = preGraph("fig-13.33.png")
r('p <- ggplot(east_asia, aes(x=long, y=lat, group=group,...
r('plot(p)')
postGraph(graph)
# グラフがゆがんでいるのは、要チェックです。
}}
&ref(fig-13.33.png);
sageへの入力:
#pre{{
# 塗り分け地図(コロプレス地図)
r('states_map = map_data("state")')
r('crimes <- data.frame(state = tolower(rownames(USArrest...
r('crime_map <- merge(states_map, crimes, by.x="region", ...
graph = preGraph("fig-13.35.png")
r('p <- ggplot(crime_map, aes(x=long, y=lat, group=group,...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-13.35.png);
sageへの入力:
#pre{{
# 日本地図
# r('install.packages("raster")')
r('library(raster)')
# シェープファイルを読み込む場合は、readShapePoly関数を使...
}}
sageへの入力:
#pre{{
r('japan_shp <- getData("GADM", country="JPN", level=1)')
r('japan_map <- fortify(japan_shp)')
graph = preGraph("fig-13.40.png")
r('p <- ggplot(japan_map, aes(x=long, y=lat, group=group)...
r('plot(p)')
postGraph(graph)
# プロットにちょっと時間がかかります。
}}
&ref(fig-13.40.png);
** コメント [#j94b523e]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- このページがヒントになり Mathematica RLink を使って ggp...
- ysatoさま、最近の意気込みのすごさが伝わってきます。頑張...
- mac の Sage-8.3 で r("install.packages('ggplot2')") を...
- 8.3 ではなく Sage 6.3 です。 Sage 6.2 で試したところエ...
- ysatoさま、貴重な情報ありがとうございます。 -- [[竹本 ...
- Sage 6.3 の問題の解決法ををsage-support に教えてもらい...
- ysatoさま、sage-supportに問いあせて頂きましてありがとう...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2014/03/22からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/39/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
** RグラフィックスクックブックをSageで試してみる [#lf2eae...
[[Rグラフィックスクックブック ―ggplot2によるグラフ作成の...
にでている例題をpython版ggplotで試し、ggplotでサポートし...
Sageでデータをプロットするときに参考にしてください。
sageへの入力:
#pre{{
# Rの必要なライブラリ
#r("install.packages('ggplot2')")
r('library(ggplot2)')
#r("install.packages('gcookbook')")
r('library(gcookbook)')
# RUtilでjsonliteを使用するため、未インストールならインス...
#r("install.packages('jsonlite')")
# Pythonパッケージのインポート
import pandas as pd
import numpy as np
from ggplot import *
# RUtilにRとPandasのデータフレームを相互に変換する関数を...
load(DATA + 'RUtil.py')
}}
*** 連続値をカテゴリに変換する [#y77dcd6f]
Pandasを使って連続値の区間で区切って処理する方法の紹介で...
sageへの入力:
#pre{{
age = np.array([20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 4...
sex = np.array(['F', 'M', 'M', 'M', 'F', 'M', 'F', 'M', '...
df = pd.DataFrame({'age': age, 'sex': sex})
df
}}
#pre{{
age sex
0 20 F
1 22 M
2 25 M
3 27 M
4 21 F
5 23 M
6 37 F
7 31 M
8 61 F
9 45 M
10 41 F
11 32 M
[12 rows x 2 columns]
}}
sageへの入力:
#pre{{
# カテゴリ分けする区切り値
bins = [18, 25, 35, 60, 100]
cat_names = ['youth', 'YoungAdult', 'MiddleAged', 'Senior']
df['bins'] = pd.cut(df.age, bins, labels=cat_names)
df.head()
}}
#pre{{
age sex bins
0 20 F youth
1 22 M youth
2 25 M youth
3 27 M YoungAdult
4 21 F youth
[5 rows x 3 columns]
}}
** ここからプロット例 [#g9269734]
sageへの入力:
#pre{{
# gcookbookのサンプルデータからheightweightを取得する
heightweight = RDf2PandaDf("heightweight")
heightweight.head()
}}
#pre{{
ageMonth ageYear heightIn sex weightLb
0 143 11.92 56.3 f 85.0
1 155 12.92 62.3 f 105.0
2 153 12.75 63.3 f 108.0
3 161 13.42 59.0 f 92.0
4 191 15.92 62.5 f 112.5
[5 rows x 5 columns]
}}
sageへの入力:
#pre{{
heightweight.tail()
}}
#pre{{
ageMonth ageYear heightIn sex weightLb
231 164 13.67 66.5 m 112.0
232 189 15.75 65.0 m 114.0
233 164 13.67 61.5 m 140.0
234 167 13.92 62.0 m 107.5
235 151 12.58 59.3 m 87.0
[5 rows x 5 columns]
}}
sageへの入力:
#pre{{
# Rec.2.1 散布図を作成する
ggplot(mtcars, aes(x='wt', y='mpg')) + geom_point()
}}
#pre{{
<ggplot: (8125969)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.1.png);
sageへの入力:
#pre{{
# Rec.2.2 折れ線グラフを作成する
# 単純なデータなら以下の様にRから持ってくることもできる
pressure = pd.DataFrame(sageobj(r('pressure'))['DATA'])
pressure.head()
}}
#pre{{
pressure temperature
0 0.0002 0
1 0.0012 20
2 0.0060 40
3 0.0300 60
4 0.0900 80
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(pressure, aes(x='temperature', y='pressure')) +geo...
}}
#pre{{
<ggplot: (8165273)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.2.png);
sageへの入力:
#pre{{
# Rec.2.3 棒グラフを作成する
# cylは連続値なので、factorで離散として扱う
ggplot(mtcars, aes(x='factor(cyl)')) +geom_bar()
}}
#pre{{
<ggplot: (8361829)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.3.png);
sageへの入力:
#pre{{
# Rec.2.4 ヒストグラムを作成する
ggplot(mtcars, aes(x='mpg')) + geom_histogram(binwidth='4')
}}
#pre{{
<ggplot: (8371409)>
}}
sageへの入力:
#pre{{
ggsave('Rec.2.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.2.4.png);
sageへの入力:
#pre{{
# Rの結果と異なる!
graph = preGraph("fig2.4.png")
r('p <- ggplot(mtcars, aes(x=mpg)) + geom_histogram(binwi...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.4.png);
sageへの入力:
#pre{{
# ToothGrowthデータをRから持ってくる
ToothGrowth = RDf2PandaDf('ToothGrowth')
ToothGrowth.head()
}}
#pre{{
dose len supp
0 0.5 4.2 VC
1 0.5 11.5 VC
2 0.5 7.3 VC
3 0.5 5.8 VC
4 0.5 6.4 VC
[5 rows x 3 columns]
}}
sageへの入力:
#pre{{
# Rec.2.5 箱ひげ図を作成する
# geom_boxplotはまだ実装されていないみたい
# ggplot(ToothGrowth, aes(x='interaction(supp, dose)', y=...
}}
sageへの入力:
#pre{{
#ggsave('Rec.2.4.png', dpi=50)
}}
sageへの入力:
#pre{{
graph = preGraph("fig2.5.png")
r('p <- ggplot(ToothGrowth, aes(x=interaction(supp, dose)...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.5.png);
sageへの入力:
#pre{{
# Rec.2.6 関数曲線をプロットする
# stat_functionはまだ実装されていないみたい
graph = preGraph("fig2.6.png")
r('myfun <- function(xvar){ 1/(1 + exp(-xvar + 10)) }')
r('p <- ggplot(data.frame(x=c(0, 20)), aes(x=x)) + stat_f...
r('plot(p)')
postGraph(graph)
}}
&ref(fig2.6.png);
sageへの入力:
#pre{{
# Rec.3.1 棒グラフを作成する
pg_mean = pd.DataFrame({'group':['ctrl', 'trt1', 'trt2'],...
pg_mean.head()
}}
#pre{{
group weight
0 ctrl 5.03200000000000
1 trt1 4.66100000000000
2 trt2 5.52600000000000
[3 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8711265)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.1.png);
sageへの入力:
#pre{{
# R版と指定方法が異なるので
graph = preGraph("fig3.1.png")
r('p <- ggplot(pg_mean, aes(x=group, y=weight)) + geom_ba...
r('plot(p)')
postGraph(graph)
}}
&ref(fig3.1.png);
sageへの入力:
#pre{{
# Fig3-2
BOD = RDf2PandaDf("BOD")
BOD.head()
}}
#pre{{
Time demand
0 1 8.3
1 2 10.3
2 3 19.0
3 4 16.0
4 5 15.6
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
# ggplotの場合、factor(Time)のようにプロットされる
ggplot(BOD, aes(x='Time', weight='demand')) + geom_bar(st...
}}
#pre{{
<ggplot: (8711273)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.2a.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.2a.png);
sageへの入力:
#pre{{
ggplot(BOD, aes(x='factor(Time)', weight='demand')) + geo...
}}
#pre{{
<ggplot: (8836749)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.2b.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.2b.png);
sageへの入力:
#pre{{
# Fig3-3
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8980677)>
}}
sageへの入力:
#pre{{
ggsave('fig.3.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig.3.3.png);
sageへの入力:
#pre{{
# Rec.3.2 棒をグループ化する
cabbage_exp = pd.DataFrame({'Cultivar': ['c39', 'c39', 'c...
cabbage_exp
}}
#pre{{
Cultivar Date Weight
0 c39 d16 3.18000000000000
1 c39 d20 2.80000000000000
2 c39 d21 2.74000000000000
3 c52 d16 2.26000000000000
4 c52 d20 3.11000000000000
5 c52 d21 1.47000000000000
[6 rows x 3 columns]
}}
sageへの入力:
#pre{{
# 横並びができない。d20の積み重ねの色が変?
#ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weight...
ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weight'...
}}
#pre{{
<ggplot: (8710225)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.2.png);
sageへの入力:
#pre{{
# Rec.3.2 棒をグループ化
graph = preGraph("fig3.4.png")
r('p <- ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cu...
r('plot(p)')
postGraph(graph)
}}
&ref(fig3.4.png);
sageへの入力:
#pre{{
# Rec.3.3 個数を示す棒グラフを作成する
ggplot(diamonds, aes(x='cut')) + geom_bar()
}}
#pre{{
<ggplot: (9117985)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.3.png);
sageへの入力:
#pre{{
# Rec.3.4 色つきの棒グラフを作成する
r('upc <- subset(uspopchange, rank(Change)>40)')
graph = preGraph("Rec.3.4.png")
r('p <- ggplot(upc, aes(x=Abb, y=Change, fill=Region)) + ...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.4.png);
sageへの入力:
#pre{{
# Rec.3.5 棒の正負によって色を塗り分ける
# 値が正か負を示すpos列をデータフレームに追加する
r('csub <- subset(climate, Source=="Berkeley" & Year >= 1...
r('csub$pos <- csub$Anomaly10y >= 0')
r('head(csub)')
}}
#pre{{
Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y ...
101 Berkeley 1900 NA NA -0.171 0.108 F...
102 Berkeley 1901 NA NA -0.162 0.109 F...
103 Berkeley 1902 NA NA -0.177 0.108 F...
104 Berkeley 1903 NA NA -0.199 0.104 F...
105 Berkeley 1904 NA NA -0.223 0.105 F...
106 Berkeley 1905 NA NA -0.241 0.107 F...
}}
sageへの入力:
#pre{{
graph = preGraph("Rec.3.5.png")
r('p <- ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos))...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.5.png);
sageへの入力:
#pre{{
# Rec.3.6 棒の幅と間隔を調整する
# 最大の幅1.0
# 指定が効かない
ggplot(pg_mean, aes(x='group', weight='weight')) + geom_b...
}}
#pre{{
<ggplot: (8826161)>
}}
sageへの入力:
#pre{{
ggsave('Rec.3.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.3.6.png);
sageへの入力:
#pre{{
# Rec.3.7 積み上げ棒グラフを作成する
graph = preGraph("Rec.3.7.png")
r('p <- ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cu...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.7.png);
sageへの入力:
#pre{{
# Rec.3.8 100%積み上げ棒グラフ(Practical Data Science版)
graph = preGraph("Rec.3.8.png")
r('p <- ggplot(cabbage_exp) + geom_bar(aes(x=Date, y=Weig...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.8.png);
sageへの入力:
#pre{{
# Rec.3.9 棒グラフにラベルを追加する vjustでラベルの位置...
# python版はダメ
# ggplot(cabbage_exp, aes(x='factor(Date)', weight='Weigh...
graph = preGraph("Rec.3.9.png")
r('p <- ggplot(cabbage_exp, aes(x=interaction(Date, Culti...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.9.png);
sageへの入力:
#pre{{
#ggsave('Rec.3.9.png', dpi=50)
}}
sageへの入力:
#pre{{
# geom_textは実装されているが、文字列のプロットのみをサポ...
ggplot(aes(x='wt', y='mpg', label='name'), data=mtcars) + \
geom_text()
}}
#pre{{
<ggplot: (8987329)>
}}
sageへの入力:
#pre{{
ggsave('test1.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(test1.0.png);
sageへの入力:
#pre{{
# Rec.3.10 クリーブランドのドットプロットを作成する
r('tophit <- tophitters2001[1:25,]') # tophitters2001...
graph = preGraph("Rec.3.10.png")
r('p <- ggplot(tophit, aes(x=avg , y=name)) + geom_point(...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.3.10.png);
sageへの入力:
#pre{{
# PDSの手法で、X軸とY軸を入れ替えてみる
graph = preGraph("fig-3.29.png")
r('p <- ggplot(tophit, aes(x=avg , y=name)) + geom_point(...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-3.29.png);
sageへの入力:
#pre{{
# Rec.4.1 基本的な折れ線グラフを作成する(Python版)
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line()
}}
#pre{{
<ggplot: (9320477)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.1.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.1.0.png);
sageへの入力:
#pre{{
# Rec4.2 折れ線グラフに点を追加する(Python版)
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line() + geom_point()
}}
#pre{{
<ggplot: (9824733)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.2.0.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.2.0.png);
sageへの入力:
#pre{{
# Y軸を対数表示を加える(Python版)
worldpop = RDf2PandaDf("worldpop")
}}
sageへの入力:
#pre{{
ggplot(worldpop, aes(x='Year', y='Population')) + \
geom_line() + geom_point() + scale_y_log()
}}
#pre{{
<ggplot: (9329829)>
}}
sageへの入力:
#pre{{
ggsave('fig-4.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-4.5.png);
sageへの入力:
#pre{{
# Rec.4.3 複数の線を持つ折れ線グラフを作成する(Python版)
r('library(plyr)')
# ToothGrowthデータを要約する
r('tg <- ddply(ToothGrowth, c("supp", "dose"), summarise,...
}}
#pre{{
supp dose length
1 OJ 0.5 13.23
2 OJ 1.0 22.70
3 OJ 2.0 26.06
4 VC 0.5 7.98
5 VC 1.0 16.77
6 VC 2.0 26.14
}}
sageへの入力:
#pre{{
tg = RDf2PandaDf("tg")
}}
sageへの入力:
#pre{{
ggplot(tg, aes(x='dose', y='length', colour='supp')) + \
geom_line()
}}
#pre{{
<ggplot: (9823801)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.3.png);
sageへの入力:
#pre{{
# Rec.4.4 線の体裁を変更する(Python版) Rではlinetypeで線...
ggplot(BOD, aes(x='Time', y='demand')) + \
geom_line(linestyle="dashed", color="blue")
}}
#pre{{
<ggplot: (10373117)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.4.png);
sageへの入力:
#pre{{
# Rec.4.5 点の体裁を変更する(Python版) R版とはsizeの単位...
ggplot(BOD, aes(x='Time', y='demand')) + geom_line() + \
geom_point(size=100, color="darkred")
}}
#pre{{
<ggplot: (10838649)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.5.png);
sageへの入力:
#pre{{
# Rec.4.6 網掛け領域付きのグラフを作成する (Python版未完...
r('sunspotyear <- data.frame(Year = as.numeric(time(sunsp...
sunspotyear = RDf2PandaDf('sunspotyear'); sunspotyear.hea...
}}
#pre{{
Sunspots Year
0 5 1700
1 11 1701
2 16 1702
3 23 1703
4 36 1704
[5 rows x 2 columns]
}}
sageへの入力:
#pre{{
ggplot(sunspotyear, aes(x="Year", y="Sunspots")) + geom_l...
}}
#pre{{
<ggplot: (10382145)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.6.png);
sageへの入力:
#pre{{
# R版
graph = preGraph("fig-4.17.png")
r('p <- ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + ge...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.17.png);
sageへの入力:
#pre{{
# Rec.4.7 積み上げ面グラフを作成する(ダメ)
uspopage = RDf2PandaDf('uspopage'); print uspopage.head()
ggplot(uspopage, aes(x="Year", y="Thousands", fill="AgeGr...
}}
#pre{{
AgeGroup Thousands Year
0 <5 9181 1900
1 5-14 16966 1900
2 15-24 14951 1900
3 25-34 12161 1900
4 35-44 9273 1900
[5 rows x 3 columns]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
KeyError: 'ymin'
}}
sageへの入力:
#pre{{
ggsave('Rec.4.7.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.7.png);
sageへの入力:
#pre{{
# R版
graph = preGraph("fig-4.20.png")
r('p <- ggplot(uspopage, aes(x=Year, y=Thousands, fill=Ag...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.20.png);
sageへの入力:
#pre{{
# Rec.4.9 信頼区間の領域を追加する
# Anomaly10y: 1950~1980年までの平均気温からの偏差の10年移...
# Unc10y: 95%の信頼区間
r('clim <- subset(climate, Source == "Berkeley", select=c...
clim = RDf2PandaDf('clim')
}}
sageへの入力:
#pre{{
# 上限、下限の線で代用
up_line = pd.DataFrame({
'y': (clim.Anomaly10y + clim.Unc10y).tolist(),
'x': clim.Year.tolist()})
lw_line = pd.DataFrame({
'y': (clim.Anomaly10y - clim.Unc10y).tolist(),
'x': clim.Year.tolist()})
}}
sageへの入力:
#pre{{
ggplot(clim, aes(x="Year", y="Anomaly10y")) + \
geom_line() + \
geom_line(aes(x="x", y="y"), linestyle="dashed", colo...
geom_line(aes(x="x", y="y"), linestyle="dashed", colo...
}}
#pre{{
<ggplot: (11396593)>
}}
sageへの入力:
#pre{{
ggsave('Rec.4.9.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.4.9.png);
sageへの入力:
#pre{{
# R版 alpha指定が効かない
graph = preGraph("fig-4.25.png")
r('p <- ggplot(clim, aes(x=Year, y=Anomaly10y)) + geom_r...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-4.25.png);
sageへの入力:
#pre{{
# Rec.5.1 基本的な散布図を作成する
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (11405253)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.1.png);
sageへの入力:
#pre{{
# R5.2 色と形を使用してデータポイントをグループ化
ggplot(heightweight, aes(x="ageYear", y="heightIn", color...
}}
#pre{{
<ggplot: (10243605)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.4a.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.4a.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn", shape...
}}
#pre{{
<ggplot: (11561281)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.4b.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.4b.png);
sageへの入力:
#pre{{
# Rec.5.3 点の形を指定する
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
Traceback (most recent call last):
….
AttributeError: Unknown property shape
}}
sageへの入力:
#pre{{
# R版
graph = preGraph("Rec.5.3.png")
r('p <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) ...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.5.3.png);
sageへの入力:
#pre{{
# Rec.5.4 連続値変数を色やサイズにマッピングする
ggplot(heightweight, aes(x="ageYear", y="heightIn", colou...
}}
#pre{{
<ggplot: (11220169)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.4.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn", size=...
}}
#pre{{
<ggplot: (12021677)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.9.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.9.png);
sageへの入力:
#pre{{
# Rec.5.5 オーバープロットを扱う
ggplot(diamonds, aes('carat', 'price')) + \
geom_point(alpha=1/20.) + \
ylim(0, 20000)
}}
#pre{{
<ggplot: (11783761)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.5.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.5.png);
sageへの入力:
#pre{{
# Rec.5.6 回帰モデルの直線をフィットさせる
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (13715161)>
}}
sageへの入力:
#pre{{
ggsave('Rec.5.6.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.5.6.png);
sageへの入力:
#pre{{
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (13566493)>
}}
sageへの入力:
#pre{{
ggsave('fig-5.19.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-5.19.png);
sageへの入力:
#pre{{
# ggplotの例題だと上手く表示できている
meat_lng = pd.melt(meat[['date', 'beef', 'pork', 'broiler...
ggplot(aes(x='date', y='value', colour='variable'), data=...
geom_point() + \
stat_smooth(color='red')
}}
#pre{{
<ggplot: (12929917)>
}}
sageへの入力:
#pre{{
ggsave('sample1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(sample1.png);
sageへの入力:
#pre{{
# Rの結果は
graph = preGraph("fig-5.19-1.png")
r('p <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) ...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-5.19-1.png);
sageへの入力:
#pre{{
# glmでのスムーズ曲線
r('library(MASS)')
graph = preGraph("fig-5.20.png")
r('b <- biopsy')
r('b$classn[b$class == "benign"] <- 0')
r('b$classn[b$class == "malignant"] <- 1')
r('p <- ggplot(b, aes(x=V1, y=classn)) + geom_point(posit...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-5.20.png);
sageへの入力:
#pre{{
# 不要な散布図のレシピは省略
}}
sageへの入力:
#pre{{
# Rec.6.1 基本的なヒストグラムを作成する
faithful = RDf2PandaDf('faithful')
ggplot(faithful, aes(x="waiting")) + geom_histogram()
}}
#pre{{
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
<ggplot: (13745201)>
}}
sageへの入力:
#pre{{
ggsave('Rec.6.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.6.1.png);
sageへの入力:
#pre{{
# binwidth=5 と色を変更
ggplot(faithful, aes(x="waiting")) + geom_histogram(binwi...
}}
#pre{{
<ggplot: (13192921)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.2.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.2.png);
sageへの入力:
#pre{{
# Rec.6.2 グループ化されたデータから複数のヒストグラムを...
birthwt = RDf2PandaDf('birthwt')
ggplot(birthwt, aes(x="bwt")) + geom_histogram(color="gre...
}}
#pre{{
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
binwidth defaulted to range/30. Use 'binwidth = x' to adj...
<ggplot: (13159925)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.4.png);
sageへの入力:
#pre{{
# Rec.6.3 密度曲線を作成する
ggplot(faithful, aes(x="waiting")) + geom_density()
}}
#pre{{
<ggplot: (14193865)>
}}
sageへの入力:
#pre{{
ggsave('fig-6.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(fig-6.3.png);
sageへの入力:
#pre{{
# Rec.6.4 グループ化されたデータから複数の密度曲線を作成...
ggplot(birthwt, aes(x="bwt", colour="factor(smoke)")) + g...
}}
#pre{{
<ggplot: (14393965)>
}}
sageへの入力:
#pre{{
ggsave('Rec.6.4.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.6.4.png);
sageへの入力:
#pre{{
# Rec.6.6 基本的な箱ひげ図を作成する
graph = preGraph("Rec.6.6.png")
r('p <- ggplot(birthwt, aes(x=factor(race), y=bwt)) + geo...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.6.6.png);
sageへの入力:
#pre{{
# Rec.6.12 2次元データから密度プロットを作成する
graph = preGraph("Rec.6.12.png")
r('p <- ggplot(faithful, aes(x=eruptions, y=waiting)) + g...
r('plot(p)')
postGraph(graph)
}}
&ref(Rec.6.12.png);
sageへの入力:
#pre{{
# Rec.9.3 テーマを使う
# ブラックとホワイトのテーマ
ggplot(heightweight, aes(x="ageYear", y="heightIn")) + ge...
}}
#pre{{
<ggplot: (14404949)>
}}
sageへの入力:
#pre{{
ggsave('Rec.9.3.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.9.3.png);
sageへの入力:
#pre{{
# Rec.11.1 ファセットを使いサブプロットに分割する
mpg = RDf2PandaDf('mpg')
ggplot(mpg, aes(x="displ", y="hwy")) + geom_point() + fac...
}}
#pre{{
<ggplot: (14685905)>
}}
sageへの入力:
#pre{{
ggsave('Rec.11.1.png', dpi=50)
}}
#pre{{
Saving 11.0 x 8.0 in image.
}}
&ref(Rec.11.1.png);
sageへの入力:
#pre{{
# R版では、水平、垂直パネルにも分割できる
graph = preGraph("fig-11.1.png")
r('p <- ggplot(mpg, aes(x=displ, y=hwy)) + geom_point()')
r('p <- p + facet_grid(drv ~ .)')
#r('p + facet_grid(. ~ cyl)')
#r('p + facet_grid(drv ~ cyl)')
r('plot(p)')
postGraph(graph)
}}
&ref(fig-11.1.png);
sageへの入力:
#pre{{
# 地図のプロット
# r('install.packages("mapproj")')
r('library(maps)')
}}
#pre{{
[1] "maps" "MASS" "plyr" "jsonlite" "gco...
[9] "grDevices" "utils" "datasets" "methods" "bas...
}}
sageへの入力:
#pre{{
# アメリカの地図データを取得
junk = r('states_map <- map_data("state")')
}}
sageへの入力:
#pre{{
r('class(states_map)')
graph = preGraph("fig-13.32.png")
r('p <- ggplot(states_map, aes(x=long, y=lat, group=group...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-13.32.png);
sageへの入力:
#pre{{
# 世界地図から日本と韓国、中国をプロット
r('world_map <- map_data("world")')
junk = r('east_asia <- map_data("world", region=c("Japan"...
}}
sageへの入力:
#pre{{
graph = preGraph("fig-13.33.png")
r('p <- ggplot(east_asia, aes(x=long, y=lat, group=group,...
r('plot(p)')
postGraph(graph)
# グラフがゆがんでいるのは、要チェックです。
}}
&ref(fig-13.33.png);
sageへの入力:
#pre{{
# 塗り分け地図(コロプレス地図)
r('states_map = map_data("state")')
r('crimes <- data.frame(state = tolower(rownames(USArrest...
r('crime_map <- merge(states_map, crimes, by.x="region", ...
graph = preGraph("fig-13.35.png")
r('p <- ggplot(crime_map, aes(x=long, y=lat, group=group,...
r('plot(p)')
postGraph(graph)
}}
&ref(fig-13.35.png);
sageへの入力:
#pre{{
# 日本地図
# r('install.packages("raster")')
r('library(raster)')
# シェープファイルを読み込む場合は、readShapePoly関数を使...
}}
sageへの入力:
#pre{{
r('japan_shp <- getData("GADM", country="JPN", level=1)')
r('japan_map <- fortify(japan_shp)')
graph = preGraph("fig-13.40.png")
r('p <- ggplot(japan_map, aes(x=long, y=lat, group=group)...
r('plot(p)')
postGraph(graph)
# プロットにちょっと時間がかかります。
}}
&ref(fig-13.40.png);
** コメント [#j94b523e]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- このページがヒントになり Mathematica RLink を使って ggp...
- ysatoさま、最近の意気込みのすごさが伝わってきます。頑張...
- mac の Sage-8.3 で r("install.packages('ggplot2')") を...
- 8.3 ではなく Sage 6.3 です。 Sage 6.2 で試したところエ...
- ysatoさま、貴重な情報ありがとうございます。 -- [[竹本 ...
- Sage 6.3 の問題の解決法ををsage-support に教えてもらい...
- ysatoさま、sage-supportに問いあせて頂きましてありがとう...
#comment_kcaptcha
ページ名:
SmartDoc