ExcelのグラフをTeXに載せる方法(仮想EPSプリンタ版/Windows)
Excelのグラフを載せる→注意すべき点が多い!!
手順と注意点とコツをメモしておきます。Windows 7とWindows Vistaで行った手順です。注意点が多いのですが、うまくやればスムーズに出来るはずです。TeXに不慣れな卒論生向け。TeXのインストールは「簡単TeXインストール@Windows」でやっておくこと前提。
仮想EPSプリンタを作る
1.スタートボタンから「デバイスとプリンター」
2.プリンターの追加
3.プリンターポートの選択→「FILE:(ファイルへ出力)」
プリンタといえど、紙に印刷するのではなく、.epsファイルを作成したいので、出力先をファイルにします。
4.次へ
5.プリンタを選択→「製造元:Xerox」「プリンター:Xerox Phaser 6180N PS」
「PS」は「PostScript」の略で、「EPS」の「PS」と同じです。どれでも言い訳ではなく、PostScriptを受け付けるプリンタである必要があります。ただ、ある意味対応していればどれでも良いとも居ます(若干の違い有り)。ちなみに、Vistaにこのプリンタが表示されなかったので、Vistaでは「Xerox Phaser 6250N PS」を選択しました。
6.次へ
7.プリンタ名→「EPSプリンタ」に
8.次へ
9.少し待つ
10.「このプリンターを共有しない」を選択して次へ
共有しても良いと思いますが、必要ないので(よくわかりません)
11.通常使うプリンターに設定するを外す
さすがに仮想EPSプリンタを常用することはないでしょう
12.完了
これで仮想EPSプリンタは完成です。
Excelから.epsファイルを作る
Office 2010をベースに話しますが、注意点はただ一つ、そしてそれは「必ず用紙は縦にすること」です。
1.グラフを作る
2.グラフを選択する
3.ファイルタブから「印刷」を選択
4.プリンター→「EPSプリンタ」
先ほど作ったEPSプリンタを選択します。
5.「縦方向」を選択
最重要です。必ず縦方向を選択してください。グラフが例え横長であっても横方向を選択してはいけません。たとえば、グラフが文字列に突っ込んだり、グラフの方向がおかしくなったり、二段組みの際に二段組みなのにページの中央にグラフが行ってしまったり、ろくなことになりません。回転は出来ても文字の上に画像が表示されてしまったりするので縦方向にしましょう。
6.プレビューをよく見る
とにかくチェックすること!グラフを書いているときはうまく文字が表示されていても、印刷するとずれることが良くありますそして、少しずれるだけでなく、文字がはみ出て読めなくなったり表示されなくなったりします。要注意です。必ず確認してください。とくにグラフの凡例が途中で切れてしまうことがあるので注意。
7.「印刷」を押す
8.出力先ファイル名→「D:\GRAPH.eps」などに設定
出力先のフルパスを必ず設定しましょう。一度、そのままファイル名を書いてせっかく出力したファイルを行方不明にしてしまったことがあります。保存したいフォルダのパスをコピーして、ファイル名だけ書き足すと良いでしょう。
9.OKを押して少し待って終了
EPSの表示範囲を調節する
このままだと、縦長A4丸ごと出力されてしまうので、出力する範囲を「BoundingBox」で指定します。
1.GSViewを起動する
私の環境(Windows 7 64bit)では「"C:\Program Files (x86)\Ghostgum\gsview\gsview32.exe"」にありました。
2.OKを押す
小さいメッセージが表示されたらOK。
3.GRAPH.epsをドラッグアンドドロップでGSViewへ
グラフが表示されると思います。
4.表示したい範囲を表す長方形を頭の中でイメージする
表示したい範囲を定めてください。頭の中で。
5.思い浮かべた長方形の「左下」の座標をメモ
思い浮かべた長方形の左下にマウスカーソルを持って行くと、GSViewの左下に座標が「59, 317pt」のような形式で表示されるので、表示された順番でメモしてください。ここでは「59 235」です。
6.思い浮かべた長方形の「右上」の座標をメモ
今度は右上で同じように「523, 485pt」という表示を「523 485」とメモします。
7.EPSファイルをメモ帳で開く
メモ帳を起動して、GRAPH.epsファイルをドラッグアンドドロップしてください。すると、GRAPH.epsの中身(文字列!)が表示されます。
8.「%%BoundingBox: (atend)」を「%%BoundingBox: 59 235 523 485」と書き換える
ファイルの先頭から数行目にある「BoundingBox」というところが、はじめは「(atend)」となっていると思います。ここに、先ほどメモした番号を、メモした順に4つ、スペースを一つずつ挟んで書いてください。
9.ファイルの末尾の「%%Trailer」より下に「%%BoundingBox:」で始まる行があれば削除
これを削除しないと、うまく設定が反映されません。ちなみに、EPSプリンタによっては(?)もともとこの行が現れないので、存在しなければ何もする必要はありません。ただし、もしあれば必ずその行ごと削除してください。
10.上書き保存
しっかり保存しましょう。
TeXに書き込む
ここまでくれば、あとはTeXの本文中に書き込むだけです。
1.GRAPH.epsファイルを.texと同じフォルダへ設置
コピーでも移動でも、同じフォルダに置いてください。
2.texの\documentclass(または\documentstyle)の直後あたりに「\usepackage[dvipdfmx]{graphicx}」と書く
[dvipdfmx]の部分は、TeXを最終的に出力するソフトウェアに合わせて選択します。他には「[dvips]」や「[dviout]」が考えられます。「[dvipdfmx]」ごと省略すると、「[dvips]」を選択したことになるようです。適切なものを選択することで、正しい出力結果が得られます。
3.texに次のコードを書く
\begin{figure}[tb]
\begin{center}
\includegraphics[clip, width=\columnwidth]{GRAPH}
\caption{グラフのタイトルをここに書く}
\end{center}
\end{figure}
「GRAPH」は、ファイル名「GRAPH.eps」の拡張子「.eps」以外の部分のことです。ファイルを指定するとき、拡張子は不要みたいです。
4.普段通りコンパイルする
5.完成
きっとうまく行ってるはず。
まとめ
以上、ExcelのグラフをTeXに貼り付ける方法でした。少しめんどくさいですが、注意点に気を付ければ、わりとスムーズに出来るはずです。注意点には本当に注意です。エラーが出たときは、用紙が横になっていないかなどチェックしてみてください。
追記
- 2011/01/29 graphicxのオプションについてを追加
参考
この記事は、下記のサイトの通りやって出会ったエラーを追記した感じになっています。画像で見られます下記サイトへ。
FC2blogに編集ボタンを設置する
過去の記事の管理
一度書いた記事を編集するときには、 FC2Blogの管理画面にある「過去の記事の管理」から該当する記事を探して編集していました。 他のテンプレートには「編集」ボタンが各ページに表示されるのかもしれませんが、自分が今使っているテンプレートにはそれがないので、仕方なくちょっと調べて設置してみました。
編集ボタン
テンプレートに、次のコードを貼り付けておくだけです。
<a href="http://blog64.fc2.com/control.php?mode=editor&process=load&eno=<%topentry_no>
編集ページのURLをコピーしてきて、記事番号を「<%topentry_no>」に変更しただけです。
参考になるサイト
FC2ブログではじめるこだわりブログ 第3版 (FC2ブログ公式ガイド)
FC2ブログではじめるビジネスサイト構築レッスンブック―ステップバイステップ形式でマスターできる
はじめてのFC2ブログ―無料でかんたんブログ作成 Windows7/Vista/XP/Mac OSX
Excelで40bit(10文字)以上の16進数を10進数に変換する方法
HEX2DEC
Excel 2010には「HEX2DEC」という16進数を10進数に変換する関数があります。しかし、この関数の引数のヘルプには
必ず指定します。変換する 16 進数を文字列として指定します。数値に指定できる文字数は 10 文字 (40 ビット) までです。数値の最上位のビットは符号を表し、残りの 39 ビットは数値の大きさを表します。負の数は 2 の補数を使って表します。
と書かれています。つまり、10文字(40bit)より長い16進数を変換することは出来ません。また、最上位ビットが符号を表す点に注意しなければなりません。そこで、今回はまず160bit(40文字)の符号ビットのない16進数を、一つのセルに関数を書いて変換してみます。
HEX2DEC 160bit版
方法は簡単で、8文字(32bit)ずつの5カ所に区切って計算するだけです。その8文字を切り出す際には「MID関数」を利用します。A1に160bitの10進数が入っているとき、次のようになります。
=HEX2DEC(MID(A1,8*0+1,8))*16^(8*4)
+HEX2DEC(MID(A1,8*1+1,8))*16^(8*3)
+HEX2DEC(MID(A1,8*2+1,8))*16^(8*2)
+HEX2DEC(MID(A1,8*3+1,8))*16^(8*1)
+HEX2DEC(MID(A1,8*4+1,8))*16^(8*0)
長くなってしまいましたが、単純です。
HEX2DEC 160bit以下版
ただし、A1に40文字以下の16進数が入っていると、これは左から読み取ってしまい、値がずれてしまうので、その場合を考慮してみます。実はMID関数は、文字のないところを参照しようとしてもエラーにならず、「MID("aaa",3,10)」は"a"、「MID("a",100,100)」は""(空文字列)になります。そこを利用すると
=HEX2DEC(MID(A1,40-8*1+1,8))*16^(8*0)
+HEX2DEC(MID(A1,40-8*2+1,8))*16^(8*1)
+HEX2DEC(MID(A1,40-8*3+1,8))*16^(8*2)
+HEX2DEC(MID(A1,40-8*4+1,8))*16^(8*3)
+HEX2DEC(MID(A1,40-8*5+1,8))*16^(8*4)
特に整理していないので、もっとわかりやすくできると思います。ちなみに、このように文字が短い場合にも正しく動作するように変更したので、現在この関数は160bit以下の16進数を変換できるようになっており、このまま関数を長くすれば、もっと長いビット数にも対応できます。
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!
Excel 完全制覇パーフェクトシリーズ←おすすめ
Excel パーフェクトマスターシリーズ
WinShell上1クリックでTeXコンパイル→PDF化→PDF表示する方法
WinShellを使う
WindowsへのLaTeXインストールや、WinShellの設定方法は、過去のエントリ
を参考にしてください。
コンパイルしてからPDF化してそれを開くのがめんどう
そのままの設定だと、「TeXコンパイル(F5)」「PDFLaTeX(F10)」「PDF閲覧(F11)」という3ステップ必要です。それぞれ、前の段階が完了しないと次のステップを実行できないので、面倒です。そこで、これを1クリックで自動的に実行するようにします。
ユーザ指定プログラムを作成する
「オプション>ユーザ指定プログラム」で、ユーザ指定プログラムの設定を表示します。ユーザ指定プログラムの中から、まだ何も設定していないもの(たとえば、Tool 3)を選択し、次のように設定します。
プログラム名:PDFLaTeXandView
exeファイル名:c:\program files (x86)\adobe\reader 9.0\reader\acrord32.exe
コマンドライン:"%s.pdf"
「LaTeXを先に実行」と「PDFLaTeXを先に実行」にチェック。
exeファイル名の部分はadobeリーダーなどの実行ファイルがある場所を選択してください。
ボタンを設置する
「ユーザ指定プログラム」を作成したら、「オプション>表示>ユーザ指定」で、「ツールバー・マクロバーの編集」ウィンドウを表示して「カテゴリ」から「ユーザ指定プログラム」を選択して、「ボタン」の中から「PDFLaTeXandView」をドラッグアンドドロップしてツールバーにボタンを設置します。
実行する
あとは、設置したボタンをクリックすると、LaTeXコンパイル、PDFLaTeX、PDF閲覧が順に実行されます。これでずいぶん簡単になります。
TeXにエラーがあったら
エラーがある場合は、LaTeXコンパイル終了の時点でちゃんと終了してくれるみたいです。
Excel 2010 でヒストグラムを作成する方法
エントリ「Excel 2007 でヒストグラムを作成する方法」では、アドイン(分析ツール)を利用してヒストグラムを作成しました。Excel 2010でも同様の方法でヒストグラムを作成できます。ただ、一度作るだけなら良いのですが、いろいろ変更を加えるには少し不便です。
そこで今回は、アドインを使わず、数式でヒストグラム(度数分布グラフ)を作成します。とはいえ、難しいことはありません。ここでは、Excel関数「COUNTIFS」を使います。
追記:COUNTIFS関数ではなくFREQUENCY関数で作る方法を書きました。こちらのほうがシンプルです。→「Excelでアドインではなく数式を使ってヒストグラムを作成する方法2」