Linux の GNUPLOT で作成した グラフ(EPS画像)をWINDOWS版 LaTeXである
pLaTeX 内で読み込もうとしているのですが、読み込んでみると
何故か反時計方向に90度回転して出力されるので大変困っています。
正しい向きで出力させる方法、その他対処法を教えて下さい。

ちなみに pLaTeX の環境では Ghostscript Ver.6.5 、GSview Ver.3.6 を使用しています。
Linux 版 GNUPLOT は Ver.3.7のようです。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まず考えられる原因としては画像が最初から landscape で正しい向きになるように


記録されていることです。(横長の画像だとそうなります)
latexの画像の取り込みは普通 portrait 方向で行なうので
この場合は取り込まれた画像は当然回転してしまいます。

画像の取り込みコマンドは何を使っているのでしょうか。
Linux上のplatex2eで \includegraphics を縦書き環境で使うと
そうなるようです。原因は分かりませんが私もそれで苦労しました。
しかし横書き環境でもそうなるのなら最初に述べたように画像そのものが
原因だと思います。

そこで対策としては
(1)最初から portrait で正しい向きになるようにeps画像を作り直す。
gvのコマンドでも画像を回転させることは出来ると思いますがやったことがありませんので
マニュアルを見て下さい。imagemagicでも修正は出来ると思います。
私のお勧めはtgifを使うことです。gnuplot は tgif のobj 形式で出力が
出来るのでそれを使って一旦tgifに図を出します。そしてtgif上でportrait 方向に
なるように左上のpage style chege のボタンをクリックしてやればよいのです。
ただし画像が枠からはみ出してしまう可能性があるので、そういう時は
全体をグループ化してから枠に収まるように縮小してやります。
あとはeps 形式で印刷(tgifではファイルに出力することも印刷と呼びます)して
やるだけです。
gnuplot は縦横比を正しく出力しないので円を書かせても楕円になってしまうような
ことがありますがtgifを使えばそのような不具合も簡単に修正できます。またグラフの
座標軸だけを消したり日本語を入れたりといった加工をするにも便利です。

(2)画像の作り直しが出来ない場合
この場合はlatexのほうで取り込んだ画像を回転させる必要があります。
回転させるコマンドは \rotatebox を使います。具体的には
\rotatebox{-90}{\includegraphics{graph.eps}}
とします。
ただしこのようにしてもdviが対応していない場合には画面でdviを確認しても
回転していないように見えることがあります。(Windowsならdvioutでしょうから
まず大丈夫だと思いますが)
このときはdvipsなどのコマンドでpsファイルに変換してみて下さい。
出来た psファイルをgv などで見て正しく出力されていれば印刷しても正しく出力されるはずです。

この回答への補足

理由が大方判明しましたのでとりあえず報告しておきます。
ファイル出力のモード設定で
set terminal postscript
と入力すると、EPSファイルのヘッダーに Landscape と記され、
set terminal postscript eps
と入力すると、EPSファイルのヘッダーに Portrait と記されることがわかりました。
んで、実際にグラフを作成しpLaTeXに張り付けると、epsオプションをつけた場合(後者)
は正しい方向で張り付けられました。一方前者の場合、90度回転して表示されました。
要するに入力ミスだったということです。oodaikoさんのアドバイスは正しかったです。
ありがとうございました。
by lam

補足日時:2001/02/08 19:17
    • good
    • 1
この回答へのお礼

親切なアドバイスありがとうございました。 原因から対処法まで細かく説明していただいて。
実験レポートの〆切が押し迫っている中でのトラブルだったので、大変焦っていたんですが
大変助かりました。早速実行してみます。

お礼日時:2001/02/07 11:53

今手元にGNUPlotを使える環境が無いので具体的な方法は覚えてないのですが、確かGNUPlotはsetかなんかでPortrait/Landscapeの切り替えができたと思うのですが、helpとかで調べてみてはいかがでしょう。

その他、縦横比とかも含めて結構いろいろなことが制御できたと思います。
    • good
    • 1
この回答へのお礼

Portrait/Landscape の切替えは直接操作できなかったですけど set terminsl の後の epsオプションの有無
で結果的に切り替わるようです。bobさんの回答が解決の良いヒントになりました。回答していただき、
ありがとうございました。

お礼日時:2001/02/08 19:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエンジン回転数とピストンの往復運動の説明なのですが・・・

お世話になります。

以下の説明ですが正しいでしょうか?

『エンジンが1500rpmで回っている場合
 1分間に1500回クランクが回っているのだから
 1秒間には25回まわっている。(1500/60)

 したがって、各気筒内ではピストンは1秒間に25回
 上下往復運動している』

4サイクルの車のエンジンの話です。
あってると思っていたのですが1秒間に25回!?
と、ちょっと疑問に思ったもので・・・。

Aベストアンサー

バイクのエンジンですが、実際に1000rpm時のエンジンの状態がアニメーションで表示されます。
かなり速く回転しているという事は理解できると思いますよ。

参考URL:http://www.yamaha-motor.jp/mc/lineup/sportsbike/sr400/cafe/engine/index.html

QLinuxでのシェルプルグラミングでファイル内の数字の読み込み

Linuxでのシェルプログラミングについての質問です。
(#!/bin/shを使ってます。)

改行、空白、数字をランダムに含むファイルを複数読み込んで、それぞれのファイルから数字だけ一個ずつ抜き出すにはどうすればいいでしょうか?

最初に二個の数字(A,Bとする)読み込んで、その二つの最大公約数(C)を計算した後、さらに次の数字(D)を読み込んで次は先ほどの公約数(C)と新しく読み込んだ数字(D)の最大公約数(E)を計算して・・・を繰り返していくプログラムを作ろうとしています。

最大公約数を計算するwhile loopはできています。数字はファイルから読み込まれるため、一個ずつ空白、改行を無視しながら読み込んでいかなければいけないと思うのですが、どのようにやっていけばいいのかわかりません。

Aベストアンサー

ファイルがそう大きくなければ、こんな感じで簡単に。
for n in `cat file`
do echo $n
done

ファイルが非常に大きければ、まず空白を改行に直して、空行を取り除いて、1行ずつ読む。
cat file | tr ' ' '\n' | grep -v '^$' | while read n
do echo $n
done

Qシリンダの往復運動ですがこの写真の1から4までの意味を教えてもらえませんか?

シリンダの往復運動ですがこの写真の1から4までの意味を教えてもらえませんか?

Aベストアンサー

想像ですが、
①ソレノイドリレーのフォワード用コイル1で前進させ
②タイマーリレー1で時間稼ぎをして、
③リセット用コイル1で後進させる
④①~③の繰り返し
記号はそれぞれカタカナで書いた文字の
英語の頭文字だったりして。

実際のソレノイドのがどういう作業をするか
配置図のようなものがあれば、もう少し明確になります。

QWEBでEPSファイルを読み込んで任意の文字を埋め込んでまたEPSで出力したい

お世話になります。

WEB(PHPかなにかでと考えています)で
イラストレーター(EPS)ファイルを読み込んで
ユーザーが入力した文字を読み込んだEPSファイルと合成し、再度EPSファイルとして出力として出力したいとおもっているのですが方法がわかりません。

どなたかご教授願います。
よろしくお願いします。

Aベストアンサー

とりあえずPostScriptの文法はご存知ですか?

そもそもPostScriptは
「最終データ」であることを前提としています.
したがって,それを
自動で解析して修正するのは
かなり厄介です

しかも・・イラストレータのだすEPSファイルは
きわめて複雑ですし
「見た目上一つの単語」であっても
EPS内部では複数のパートに分かれています.

とりあえず,
お望みの機能を持っているようなライブラリの
存在は期待できないので.、
手動でお望みのことができないようであれば
自動化は不可能でしょう

ただもしかすると意外と簡単なのかも・・・
イラレ上でEPSに別のEPSファイルを埋め込んで
もとの埋め込み前のEPSと埋め込み後のEPS
埋め込んだEPSを見比べて
どのように埋め込まれているのかを解析して
それと同じことをプログラムできれば
よいのだが・・問題は埋め込み方の規則が
あるのか?ということと,イラレが
埋め込まれるEPSもばらばらにしてしまってたら
どうにもならないということ.

Qバス運動(縦に往復運動)する電動歯ブラシを探てます

いまは音波水流や超音波水流の電動歯ブラシがほとんどのようで昔風の手で磨くような往復運動をする電動歯ブラシは見当たりません。
なにしろ手と同じような動きをするバス磨きの電動歯ブラシをつかいたいので現在販売されているものがありましたらメーカー名と品番や名称など教えてください。

Aベストアンサー

サンスターgumの商品は?

参考URL:http://jp.sunstar.com/company/press/2013/pdf/131010.pdf

QBシェルで、1文字づつ読み込み、番地と共に出力する方法を教えてください。

Bシェルで、1文字づつ読み込む方法を教えてください。

次のように文字が並んでいて、
A B C D
E F G H
I J K L
M N O P
それぞれの番地と共に、上記の文字を出力する場合、
どのようにしたら宜しいでしょうか。

入力ファイル:test.txt
A B C D
E F G H
I J K L
M N O P

1 2 3 4
1 A B C D
2 E F G H
3 I J K L
4 M N O P

出力ファイル
A 1 1
B 2 1
C 3 1
D 4 1
E 1 2
F 2 2
G 3 2
H 4 2
I 1 3
J 2 3
K 3 3
L 4 3
M 1 4
N 2 4
O 3 4
P 4 4

番地に関しては、次のシェルを作成しましたが、
test.txtをどのように入力したら良いかが分かりません。

Xmax=4
Ymax=4
yy=1
while [ $yy -le $Ymax ] ; do
xx=1
while [ $xx -le $xMax ] ; do
echo $xx $yy | awk '{
printf(" %d %d ",$1,$2)
}' >>out.txt
xx=`expr $xx + 1`
done
yy=`expr $yy + 1`
done

宜しくお願いします。

Bシェルで、1文字づつ読み込む方法を教えてください。

次のように文字が並んでいて、
A B C D
E F G H
I J K L
M N O P
それぞれの番地と共に、上記の文字を出力する場合、
どのようにしたら宜しいでしょうか。

入力ファイル:test.txt
A B C D
E F G H
I J K L
M N O P

1 2 3 4
1 A B C D
2 E F G H
3 I J K L
4 M N O P

出力ファイル
A 1 1
B 2 1
C 3 1
D 4 1
E 1 2
F 2 2
G 3 2
H 4 2
I 1 3
J 2 3
K 3 3
L 4 3
M 1 4
N 2 4
O 3 4
P 4 4

番地に関しては、次の...続きを読む

Aベストアンサー

自信はないけど read と set を組合せるのかなぁ? 例えば
yy=1
while read line; do
xx=1
set -f $line
while [ $# -gt 0 ]; do
echo $1 $xx $yy
shift
xx=`expr $xx + 1`
done
yy=`expr $yy + 1`
done < test.txt
のような感じ? 手元でテストしてないので全く自信ありませんし, Bourne shell で set -f が使えるかどうかもわかりませんが.

Qモータを利用した直線往復運動機構

モータを利用して直線往復運動をする機構を作りたいと考えています。

ですが、機械設計をした事が無く、どのような部品を
選定して組み合わせたら良いのか分かりません。

可動範囲は10cm程度で、重量はほとんどかかりません。
動けばいい程度のものです。

この部品を組み合わせればいい等分かれば教えて頂けないでしょうか。
出きるだけ、安く作りたいです。

Aベストアンサー

#5だが、三度。

> 自分で作るのは無理だと思うのですが、
> モータと接続するだけで、使えるボールねじ機構などは
> 売っているのでしょうか?

文章での説明だから、上手く伝わるかわからないが・・・。
ひとつひとつ考えてくれ。
わからないところは、補足する。

まず、ボールねじは、まさにネジとナットがあれば構成できる。
この場合、ネジの長さや径は任意に選択できる。
ネジが切られたシャフトは安いのがいくらでも手に入るだろう。
ナットは、高ナットを買えば良い。
ナットは一般的に六角形だからナットが回転しないようにガイドを設ければ、シャフトが回転すればナットは直線運動する。
ガイドは、ナットを両側から挟みこむように壁を作れば良いだろう。
あとは、ネジを支える軸受けを設置すればよい。
モータとの接続は、カップリングを用いれば、シャフト径が異なったり、少々の歪みなら吸収してくれる。

欠点は、ネジ・ナットは規格品だからピッチが固定であること。
速い移動速度が欲しければピッチは荒くなるし、細かい動きが欲しければピッチは狭くする必要がある。
ピッチが狭ければナットが移動する力が大きく取れる。

まあ、機構は単純だから、ゆっくり考えてもらいたい。

#5だが、三度。

> 自分で作るのは無理だと思うのですが、
> モータと接続するだけで、使えるボールねじ機構などは
> 売っているのでしょうか?

文章での説明だから、上手く伝わるかわからないが・・・。
ひとつひとつ考えてくれ。
わからないところは、補足する。

まず、ボールねじは、まさにネジとナットがあれば構成できる。
この場合、ネジの長さや径は任意に選択できる。
ネジが切られたシャフトは安いのがいくらでも手に入るだろう。
ナットは、高ナットを買えば良い。
ナットは一般的に六角形だ...続きを読む

QGNUPLOTでのGIFグラフ出力

ここに質問するのは間違っているように思えますが、
プログラマの方だと誰かしらこれと同じ事をやったことがあるのではないかと思い、ここに質問させていただきます。
GNUPLOTというソフトを使って、
(1)ファイルに書き込まれているデータを読み込み、
(2)それをGIFに折れ線グラフで出力させる、
という処理をしたいのですが、なかなかGNUPLOTに関する
情報が少なくて困っています。
ファイルの中身というのは
2001/05 1005
2001/06 1300
2001/07 1080
2001/08 2006

というような、テキストファイルで各列ごとはスペースで区切られています。
これはある一定期間の来場者数をファイリングしたもので、
2001年5月には1005名。2001年6月には1300名......といった感じです。
これをx軸に年月、y軸に人数というように折れ線グラフにして出力させたいのですがどうしたら良いものでしょうか?
コマンド一つ一つ教えていただけると非常にありがたいです。
どうか宜しくお願いいたします。

ここに質問するのは間違っているように思えますが、
プログラマの方だと誰かしらこれと同じ事をやったことがあるのではないかと思い、ここに質問させていただきます。
GNUPLOTというソフトを使って、
(1)ファイルに書き込まれているデータを読み込み、
(2)それをGIFに折れ線グラフで出力させる、
という処理をしたいのですが、なかなかGNUPLOTに関する
情報が少なくて困っています。
ファイルの中身というのは
2001/05 1005
2001/06 1300
2001/07 1080
2001/08 2006

というような、テキストファイル...続きを読む

Aベストアンサー

bridgeさんがお使いのOSはWindowsですか?
私はLinux使いですが、コマンドラインから実行するのなら
同じだと思いますので一応Linuxでのやり方を書いておきます。

*******************************************************
読み込むデータファイルの名前をData.txtとしておきます。
読み込むデータファイルを置いてあるディレクトリでgnuplotを起動します。
コマンドラインで
gnuplot
とタイプすると
gnuplot>
というプロンプトが現れます。ここにコマンドを入れていきます。

(1)入力形式の指定
各座標データが単なる数字でかかれているデータなら
gnuplot> plot 'Data.txt' with lines
と入れてやればすぐディスプレイに表示されるのですが
入力ファイルの第一座標が日時形式になっているので
まず入力形式を指定してやる必要があります

gnuplot> set xdata time
これはx軸の入力データを時間として設定しています。

gnuplot> set timefmt "%Y/%m"
時間としての入力データの形式を指定しています。%Y/%mというのは
年/月
という形のデータであることを指定しています。年は西暦4桁です。

(2)グラフ描画
次にデータを読み込んでグラフ表示をさせます。

gnuplot> set xrange ["2000/09":"2001/08"]
gnuplot> set format x "%Y/%m"
gnuplot> plot 'Data.txt' using 1:2 with lines
最初のコマンドはx軸の範囲を指定しています。
2つめはx軸の数値の書き方を指定しています。この場合は入力と
同様に 年/月の形で表示します。
最後にデータをプロットして直線でつないだ折れ線グラフを描きます。
plot 'Data.txt' はData.txtを読み込んでグラフを書くことを
指定しています。その次の using 1:2 はデータの1列めと2列めを
それぞれxとyの入力とするという指定です。最後の with lines はデータ
同士を直線でつなぐ指定です。
このようにして描いたグラフのy軸の最小値は、デフォルトでは0でなく
データの最小値になります。
y軸の最小値を0にしたいのならplotの前に
gnuplot> set yrange [0:]
を付け加えます


さらに折れ線グラフではなく棒グラフにしたいのなら、最後のplot
の代わりに

gnuplot> set boxwidth -2.0
gnuplot> plot 'Data.txt' using 1:2 with boxes

として下さい。最初のコマンドは棒の幅を指定しています。
ここに-2.0を指定するとちょうど隣同士の棒がくっつき合うように
幅が自動調節されます。
棒の間隔を空けたければここに適当な値を指定します。
ただしここでは入力を時間単位にしたので数値は秒単位になります
従ってこののデータの場合、隣同士がくっつき合う時の幅は
3600×24×30=2592000
となります。(実際は2月と3月がわずかに重なるのがわかります)


(3)出力
デフォルトではグラフはディスプレイに表示されます。
最初はディスプレイに表示させて様子を見た方が良いでしょう。
最後にGIFファイルに出力します。ここでは出力するファイルの名前を
Data.gifとします

gnuplot> set terminal gif
gnuplot> set output 'Data.gif'
gnuplot> replot

最初のコマンドは出力形式をGIFに設定しています。
文字のフォントサイズや画像全体の大きさもオプションで指定出来ます。
help gif と打てば詳しい説明が見られます。デフォルトではフォントは
small(6x12 ピクセル)、画像サイズは 640x480ピクセルです。
gifの他に postscriptやpngなど多くの画像形式で出力できます。
set terminal と打てば出力できる形式の一覧が出てきます。
2つめのコマンドは出力ファイルの名前を指定します。
最後にデータを読み込んで描画します。
replot はこのコマンドが読み込まれる前に実行された
最後のplotを実行します。そこで新しくplotしない限り
何回replotしてもreplotの直前の条件でplotされます

------------------------------------------------
何回も同じことをやるのならコマンドラインからいちいちコマンドを打つのも
面倒ですからコマンドをまとめたバッチファイルを作ってしまいましょう。
上に解説したコマンドをまとめて以下のようなテキストファイルを作り
DataPlot.plt という名前で保存します(ファイル名は適当に付けて下さい)
そしてコマンドラインで
gnuplot DataPlot.plt
とすると自動的にバッチファイルを読み込んで実行します。

# DataPlot.plt
set xdata time
set timefmt "%Y/%m"
set xrange ["2000/09":"2001/08"]
set format x "%Y/%m"
#set yrange [0:]
plot 'Data.txt' using 1:2 with lines
pause -1
set terminal gif
set output 'Data.gif'
replot
pause -1


途中にある
pause -1
というコマンドはディスプレイにグラフを表示した後
GNUPLOTを一時停止させるためのものです。
適当なキーを押すと続きを実行します。
またGNUPLOTは#で始まる行を無視するので、コメントを入れたい時は
#で始まる行に書いておきます。

--------------------------------------------

他にもグラフの色を指定したり凡例やタイトルを指定したり
x軸やy軸のスケールや単位を指定したりとさまざまな設定が
出来ますので下のサイトを参考にしていろいろ試してみて下さい。

********************************************

GNUPLOTの役に立つ情報サイト

gnuplotの使い方については1つ目のURLが詳しいです。いろいろなテクニックが
解説してあり参考になります。
2つめは公式マニュアルの日本語化。
3つめはGNUPLOT情報サイト。リンクなどが充実しています。
4つめもリンク集です。
5つめのサイトも役に立つTipsがたくさんあります。
http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/
http://www.linux.or.jp/JF/JFdocs/gnuplot.html
http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html
http://infofarm.affrc.go.jp/~kadosawa/gnuplot.htm
http://www.nucl.phys.tohoku.ac.jp/~m_isihar/text/gnuplot.howto.html

参考URL:http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/,http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html

bridgeさんがお使いのOSはWindowsですか?
私はLinux使いですが、コマンドラインから実行するのなら
同じだと思いますので一応Linuxでのやり方を書いておきます。

*******************************************************
読み込むデータファイルの名前をData.txtとしておきます。
読み込むデータファイルを置いてあるディレクトリでgnuplotを起動します。
コマンドラインで
gnuplot
とタイプすると
gnuplot>
というプロンプトが現れます。ここにコマンドを入れていきます。

(1)入力形式の指...続きを読む

Q電子工作で、簡単に往復運動を実現するには。

こんにちは。
マイコン(PIC)などを使って、
上下運動をする方法を考えています。
(正確には、
人間の腕を棒にしたようなもので、
肩を支点に上下するイメージです。
音楽のリズムを刻ませたいです。)

どのような方法があるでしょうか。
何かアドバイスありましたら、
よろしくお願いします。

Aベストアンサー

どの部分をアドバイスしたら良いのかよく判らないのですが、
電気仕掛けならば、
モータかソレノイドを使うことになるでしょうね。

それをどうやってどうしたいか、
これはもう少し、具体的なイメージが示されないと判りません。

往復運動、反復運動の類ですから、
なんかの形で、マルチバイブレータを形成することになります。
同期させる必要はあるのでしょうかね???

楽しそうなので、何とか協力・回答・アドバイスしたいです。

もう少し、具体的なイメージを示してください。

QLaTeX:tableofcontentsによる目次出力におけるページ番号

jsarticle環境においてtableofcontentsによって目次を作成する際、

・section, subsection項にはページ番号を載せず、subsubsection項にのみページ番号を出力する
・項目とページ番号の間の中線を消す

ことは可能でしょうか。

以下のような目次にしたいのですが・・・

1. hoge
 1.1 hogehoge
  1.1.1 hogehogehoge ・・・・・・・・・・・1

Aベストアンサー

\l@section,\l@subsection
を再定義するだけ.
実際は\@dottedtoclineを適宜再定義することになる.


人気Q&Aランキング