脳卒中左片麻痺になりました

twitter http://twitter.com/#!/ti5942

タグ: TikZ

Screenshot01Screenshot02Screenshot03

・読み込めるテキストファイルのデータ形式
共通で読める形式は2つの数の組でセパレートは空白(space)
なお,plot fileでは先頭文字が#, % の行はコメント行ですが,DataVisualizationでは,#はエラーになる...

例えば,
# ではDVがエラーになるが...
Screenshot01Screenshot02Screenshot03






% のときは正常に完了します.
Screenshot01Screenshot02Screenshot03






【Data Visualization】

折れ線(line),曲線(smooth line),マークのみ(scatter)の3種類あり,座標も2種類(school box axes,scientific axes)自動でつけられる.
マーク付き折れ線のような重ね描きもできる.
Screenshot01Screenshot02Screenshot03

Screenshot01Screenshot02Screenshot03

また,座標軸のみの表示もできる.
Screenshot01


【plot file】

・指定なし→折れ線グラフ,マーク指定,マークのみ指定でDVと同じ形状のグラフが描ける
Screenshot01Screenshot02Screenshot03

Screenshot01Screenshot03


・座標軸等を描くのはちょっと面倒なので,DVの座標軸に重ね書きする.単位長さを一致させることが重要.
Screenshot01

x axis={ticks ={step=10},length=10cm,include value=100,label},

school book axesでは,原点を含めるので

x軸が0から100までで長さ10cmとるので1単位0.1cm

(もし100を含まなければ,xの最大値90で10cmだから1単位10/90cmで誤差がでる.)

だから


\begin{scope}[x=0.1cm]

【棒グラフ(ybar)を描こう!】

棒グラフとヒストグラム


Screenshot01Screenshot02



Rで作った度数分布表は

Screenshot01Screenshot02

これを以下のように変えました.

Screenshot01Screenshot02





【手順】
  1. 余白を削る.(tikzpictureの中に入れる(tabularをノードに入れる))
  2. 列位置調整
  3. キャプションを入れる
  4. 「列名」編集
  5. 「合計行」編集

1.standaloneクラスでも,previwパッケージでもtikzpicture環境に入れることで「余白」を削ることができる.

なお,(u)platexで「previwパッケージ」を使うには,「prdvipdfmx.def」が必要である.



また,編集不要なら,pdfcropや,テーブル環境ごとノードに入れてstandaloneクラスで処理してもいい(ミニページ環境が必要)と思う.

【pdfcrop】
Screenshot01Screenshot02


Screenshot03Screenshot01



【minipage+standalone】

Screenshot01Screenshot02






2.列位置をすべて右揃えにする.

Screenshot01Screenshot02





3.タイトルを表の上に置く.(タイトルの下に表を置く)

positioningライブラリを使う.

Screenshot01Screenshot02




【位置を変えてみる】

表:タイトルの上

Screenshot01Screenshot02





表:タイトルの右

Screenshot01Screenshot02





表:タイトルの左
Screenshot01Screenshot02





4.列名・編集

列名の背景をgray!80,列名をゴシック白文字にする.
\newcommand{\retumei}[]{\textcolor{white}{\textgt{#1}}}
Screenshot01Screenshot02




ありゃ,タイトルのフォーマット忘れている(^_^;)
Screenshot01Screenshot02




5.合計行・編集
Screenshot01Screenshot02








Screenshot01

plot(x$`緯度(度)`,x$`気温(℃) `,col="cyan")

Screenshot01

メインタイトルやラベルを入れる


plot(x$`緯度(度)`,x$`気温(℃) `,col="cyan",main="緯度と気温の関係",xlab="緯度(度)",ylab="気温(℃)")
Screenshot01

列名がA,B,Cのときも同じで,むしろ入力しやすい
plot(x$B,x$C,col="cyan",main="緯度と気温の関係",xlab="緯度(度)",ylab="気温(℃)")

Screenshot01


ここで,グラフをPDFやPNG,JPEG等の画像にエクスポートして,文書に挿入してもかまわないが...
Screenshot01Screenshot02Screenshot02

以下のようにしてTikZコードでエクスポートできる.

library(tikzDevice)
tikz("tex/散布図0.tikz")
plot(x$B,x$C,col="cyan",main="緯度と気温の関係",xlab="緯度(度)",ylab="気温(℃)")
dev.off()

なお,engine="luatex" または "xetex" を付記することにより警告メッセージが変わる.
(engine="luatexのときは警告メッセージなしだった.)

また,QTikZで開くことで,内容が確認できる.
Screenshot01Screenshot02Screenshot03




いま,LyXのエンジンはupLaTeXなので,yラベルを縦書きにすることも容易である.
Screenshot01Screenshot02Screenshot03


さらに,表とグラフを横に並べてみた.
Screenshot01



マークは変えれるんだろか?

LyXで表を作ったんだが...
Screenshot01

なんか変(^_^;)

作り方が間違ってるかも...

よくわからないので,LaTeX 形式で作成してみよう!
Screenshot01

まずは,データ作成
今回はテキストエディタを使って作成しました.
Screenshot01

数値データにする必要があるので

x <- as.numeric(read.table("data/成績データ.txt"))

Screenshot01
これで(R上に)データ入力完了です.

ここから,手作業なら「度数分布表」→「ヒストグラム」なのですが,Rを使えば逆方向の「ヒストグラム」→「度数分布表」が可能です.

あっ...
R上の「ヒストグラム」の画像化→LyXに図で挿入

R上の「度数分布表」の画像化→LyXに図で挿入


もう一度テキストを確認
DSC_0009

  • データはあるクラス50名の試験の得点
  • 階級幅のとり方を10点として,...
  • 一番点数の低い階級は15点以上25点未満
  • 「95点」のデータは85点以上95点未満の階級


Screenshot01

データの個数は50個(length(x)=50)で最小値は15(min(x)=15),最大値は95(max=95)

Screenshot01

histのオプションで

階級の右側が「未満」ということより
right=False,
にする.
また,「95点」のデータは85点以上95点未満の階級で,階級幅が10点ということより
breaks=seq(15,95,10),
include.lowest=TRUE,(デフォルト)
であるから,
h <- hist(x,breaks=seq(15,95,10),right=FALSE)
とすると標準デバイスに出力される.

Screenshot01Screenshot02

柱の色を"cyan"(シアン)にして
Screenshot01Screenshot02

tikzデバイス(library(tikzDvice))を使えば,tikzコード化してファイルに出力できるのですが,これは後ほど...

まずは「度数分布表」から

ひとつの「データフレーム」を作成し,それを表示させるとそれがまさしく「表」になります.
Screenshot01


度数分布表 <- data.frame(以上=ijo,未満=miman,
+                      階級値=kaikyuti,度数=dosu,
+                      相対度数=paste(sdosu,"(",sprintf("%3d",sdosu*100),"%)")
Screenshot02

この表をLaTeXコードに変換するには
Screenshot01Screenshot02

’’’
library(xtable)
print(xtable(度数分布表))
’’’
これで,変換されたLaTeXコードが画面(コンソール)に表示されます.
sink("指定ファイル") は出力先をコンソールから指定ファイルにする関数で,指定しなければ(sink())出力先はコンソールになります.

また,グラフをグラフ描画画面からTikZコード化して,指定ファイルに出力するスクリプトが
'''
library(tikzDevice)
tikz("tex/hist.tex",3,3)

hist(x,breaks=seq(15,95,10),right=F,col="cyan")
dev.off()
'''
LyXにおいて,
TeXコードで
\input{指定ファイル}
とすることにより,取り込むことができます.
Screenshot01Screenshot02Screenshot03

さらに,簡単な修正により,度数分布表とヒストグラムを並べて表示したり,ヒストグラムのラベルを日本語にしたり,縦書きにしたりできます.

Screenshot01




注意.
・「褐色 かちいろ 4D4C61」に「褐色 かっしょく 8A3B00」が被ってます
・「纁 そひ」の漢字がIPAexMinchoにない

ソースを見てみると,なぜか\usepackage{tikz}がある.
screenshot01
これは,ひょっとして課題?
ということで,やってみた(^^ゞ


  \fcolorbox{暗黒色}{#1}{\makebox[2em]{\phantom{M}}}~\makebox[5.5em][l]{#1}%
ここを

  \tikz\node[draw=暗黒色,fill=#1,minimum width=2em,label={right,text width=5.5em}:#1]{\phantom{M}};%

に変更.

screenshot01

これでいいのかなあ?


このページのトップヘ