フリーの画像ソフトで色の違いで高さを表示する画像を作成する方法

このQ&Aのポイント
  • フリーの画像ソフトを使用して、縦軸と横軸が256のデータを持つ256x256の画面に色の違いで高さを表示する画像を作成する方法を教えてください。
  • エクセルでは等高線を使用して高さを表示することができますが、高さのステップが大まかになってしまいます。より細かく高さを表示できるフリーのソフトはありますか?
  • 手元にはエクセルとオリジンがありますが、これらでも細かく高さを表示できる方法はありますか?
回答を見る
  • ベストアンサー

フリーの画像ソフトを探しています。

縦軸、横軸がそれぞれ256で、そこに256X256のデータが入っています。 この時、データの値を高さとした場合、256X256の画面に 色の違いで高さを表示した画像を作りたいと思っています。 エクセルでも等高線というのを使えば書けるみたいですが 高さのステップがかなりおおまかなため、もっと高さを 細かく表示できればいいなと思っています。 フリーのソフトでこういう事ができるものってありますか? フリーじゃなければたくさんありそうな気がしますが。。。 あと手元には、エクセル、オリジンがありますが、 これらでも細かく高さ表示できる方法ってありますか? よろしくお願いします。

  • 128yen
  • お礼率92% (513/553)

質問者が選んだベストアンサー

  • ベストアンサー
  • KanjistX
  • ベストアンサー率55% (48/86)
回答No.3

#2です。 なんか他サイトに丸投げだったんでコメントしておきます。 データがエクセルにあるなら、 ・新規シートのA1:IV256に256x256のデータのみをコピー&ペースト。 ・「名前をつけて保存」ファイルの種類「テキスト(タブ区切り)」で任意の名前(ここではBook1.txt)をつけて保存先をRの実行フォルダ(C:\Program Files\R\rw2001)に保存(状況によって多少異なる)。 Rを起動。 以下のスクリプトを入力。 x <- array(1:256) y <- array(1:256) tmp <- read.table("Book1.txt") z <- data.matrix(tmp) image(x,y,z,col=terrain.colors(500),axis=FALSE) //3行目のBook1.txtはエクセルで保存したファイル名を入力 //5行目terrain.colos(500)は色数なので好みによって増減させる。 こんなところです。

128yen
質問者

お礼

ご回答ありがとうございました。 無事、欲しかった図を得る事ができました。 できれば以下のことも出来たらいいなと思っています。 (1)どの色がどの高さなのかを表すバーのようなものが欲しい。 No.1の方の補足にした例でいうと △2 □ ●0 こんな感じの縦長のバーで、最大値と最小値に値が振られている。 (2)最大値の時の色と最小値の色を設定することができ、 中間値はそのグラデーションにしたい。 もし時間があればご回答よろしくお願いします。

その他の回答 (5)

  • KanjistX
  • ベストアンサー率55% (48/86)
回答No.6

#4のご質問について いろいろ調べましたが黒枠を消す方法についてはわかりません。 あえてカラーバーを作るなら、単純増加の数列のデータファイルを別に作って、それを処理にかけることによって得られるグラデーション画像をうまく切り取って、ラベル付けしてカラーバーにする方法くらいしか思いつきません。 私のできることはここまでです。

128yen
質問者

お礼

やはり黒枠は無理なんですね。 黒枠がない方が見た目が綺麗かな?と思っただけなので あっても特に問題があるわけではありませんが。。。 今回はこれで締め切ろうと思いますが、 また何か疑問が出てきたらまた質問しようと思いますので その時はよろしくお願いいたします。

  • KanjistX
  • ベストアンサー率55% (48/86)
回答No.5

(2)について回答 convert16<-function(n){ q=n%/%16 r=n%%16 if(q==10) q <- "A" if(q==11) q <- "B" if(q==12) q <- "C" if(q==13) q <- "D" if(q==14) q <- "E" if(q==15) q <- "F" if(r==10) r <- "A" if(r==11) r <- "B" if(r==12) r <- "C" if(r==13) r <- "D" if(r==14) r <- "E" if(r==15) r <- "F" tmp=paste(q,r,sep="") return(tmp) } gradation<-function(r1,g1,b1,r2,g2,b2,n){ rgb=0 for(i in 1:n){ r=(r1*(n-i)+r2*i)%/%n g=(g1*(n-i)+g2*i)%/%n b=(b1*(n-i)+b2*i)%/%n rgb[i]=paste("#",convert16(r),convert16(g),convert16(b),sep="") } return(rgb) } を最初に入力(コピー&ペーストで可)。 #3の五行目を filled.contour(x,y,z,level=seq(0,1000,by=50),col=gradation(255,0,0,255,255,255,20),axes=FALSE,key.axes=axis(4,seq(0,1000,by=1000))) に変更。 これについて解説。 level=seq(0,1000,by=50)は順に、最小値、最大値、いくつごとに色を変えるか。 gradation(255,0,0,255,255,255,20)は順に、開始色のR値、G値、B値、終了色のR値、G値、B値、グラデーション色数。 levelの「いくつごとに色を変えるか」の数値とグラデーション色数の積がおよそ(最大値-最小値)になっている必要がある。

128yen
質問者

お礼

ご回答ありがとうございました。 グラデーションも可能だと知って驚きました。 ただ色のつけ方がかなり難しそうですね。。。 思ったような色分布にならないので。。。 でもすぐにこういう式が思い浮かぶってことは、 かなりRにお詳しいんですね。

  • KanjistX
  • ベストアンサー率55% (48/86)
回答No.4

とりあえず(1)にお答えしておきます。 #3の五行目image(・・・)の代わりに filled.contour(x,y,z,color=terrain.colors,axes=FALSE,key.axes=axis(4,seq(0,1000,by=1000))) を入力してください。 最小値と最大値は最後のseq(0,1000,by=1000)のところを変えてください。順に最小値、最大値、ステップ幅です。 ちなみに、#3でaxis=となっていたのはaxes=の間違いでした。

128yen
質問者

お礼

何度もご回答ありがとうございました。 私の理想どおりの図を描く事ができたので、大変満足しています。 また無理なお願いなんですが、これで表示させた高さのバーは 黒枠が表示されているのですがこれって消せないでしょうか? (黒枠がない方が格好よく見えるので。。。) よろしくお願いします。

  • KanjistX
  • ベストアンサー率55% (48/86)
回答No.2

こういうのは、画像ソフトでなくて、統計処理ソフトなどを使います。 フリーの統計処理ソフトにRというものがあります。 これでやることとしましょう。 http://www.okada.jp.org/RWiki/index.php?R%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB ↑を参考にRをインストール。 等高線図・濃淡図の作り方については http://www.okada.jp.org/RWiki/index.php?cmd=read&page=%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%BB%B2%B9%CD%BC%C2%CE%E3%BD%B8%A1%A7%A5%A4%A5%E1%A1%BC%A5%B8%BF%DE&word=%C5%F9%B9%E2%C0%FE#content_1_5 ↑にあります。

128yen
質問者

お礼

画像ソフトじゃなくて統計処理ソフトを使うんですね。 Rをインストールしたのですが、使い方がよくわかっていないのと、 256×256データから濃淡図?を作る方法がよくわかりません。 もう少し簡単に作成できるソフトがあったら教えて下さい。

  • yu--u
  • ベストアンサー率10% (16/149)
回答No.1

ここでの<256X256のデータ>と<256X256の画面>と言うのが同じものなのかまったく別の値と画像のデータがあるのかわかりませんが、表が作成したいと言ううことで良いのでしょうか?それであればここにありますよ。http://www.vector.co.jp/vpack/filearea/win95/edu/math/index.html ちなみに画像を作成して今ある画像にメモリを入れたいと言うのであれば大抵の画像ソフトで画像サイズは決められますから、作って貼り付けるのが一番簡単だと思います。

128yen
質問者

補足

説明不足で分かりずらくなって申し訳ありません。 例えば、4x4のデータがあるとします。 1 0 1 2 1 2 1 0 2 0 0 1 2 2 2 0 0を●、1を□、2を△とした場合 (本当は●や□じゃなくて色によって分けたい) □●□△ □△□● △●●□ △△△● こんな感じのグラフを書きたいと思っています。 (0は赤色、1は赤+黄色、2は黄色って感じで) 数値は1~1000ぐらいあるので、色の変化が たくさんある方がいいと思っています。 まだ分かりにくいかもしれませんが、疑問がありましたら 補足しますのでよろしくお願いします。

関連するQ&A

  • 高次元グラフを描けるフリーソフト

    ある関数f(x,y)の値をz軸にとった3Dグラフというのは割と多くのソフトで描画可能だと思うのですが,f(x,y,z)を色で表して表示する4Dグラフを描けるフリーソフトってないのでしょうか? 色がついていてもそれがz軸の値に対するものでは意味がありません(エクセルの等高線図など). 4つのデータ(x,y,z座標と点における何かの値(温度など))を一つのグラフで表したいのです. また,式でなく,データからグラフが作成できるというのも必要な機能です. 何かご存じないでしょうか?

  • excel97で等高線図

    お世話になります。 excel97で等高線図を書きたいと考えています。 データは(X座標,Y座標,Z座標)で与えられています。 グラフの横軸をx座標、縦軸をy座標として、z座標を等高線で示したいのですが、可能でしょうか。 不明な点は補足要求願います。

  • 統計ソフトRで等高線図を描くには

    お世話になります。 統計ソフトRで等高線図を書きたいと考えています。 データは(X,Y,Z)で与えられています。 グラフの横軸をx座標、縦軸をy座標として、z座標を等高線で示したいのですが、どのようにすればよいでしょうか? contour関数を使えば可能だと思うのですが、どのように記述すればよいかがわかりません。 不明な点はお尋ねいただければ詳しく説明いたします。

  • エクセルで階段状のグラフの作成

    横軸の値が 10 100 300 1000 それに対する縦軸の値が 100 90 70 0 となっているときに,グラフの横軸は1000まで1刻みで階段状のグラフを作成したいのですが方法がわかりません 縦軸の値は横軸10まではずっと100、11から100までは90…となっており、縦軸の値が変わる境界値が横軸というイメージです 100 100 100 100 100 100 100 100 100 100 90 90 90 90 90 90… のように1から1000まで1刻みでデータがあればできるのですが… 実際のデータは1000までではなく数千万個ほどでわざわざ同じデータをコピーするのも大変なので、なにかいい方法はないでしょうか? エクセル2013です よろしくお願いいたします

  • グラフの高さデータを色分けしてバーで表現したい

    至急エクセルのグラフについて教えてください。添付しております写真のように、あるグラフの高さデータを横長のバーで色分けまたは、明暗で表現したいのですがどうしたらよいですか? 等高線に似ていると思うのですが、等高線のように奥行はありません。希望を言うとできるだけ細かくとりたいです。明暗のようなグレースケールでもかまいません。もし、できないのであれば、そのようなことができるフリーソフトを教えていただけないでしょうか?一応私の手元には、エクセル、Originといったソフトがあります。

  • 散布図を縦に2個並べて出力したい

    Excelを使い始めたばかりなのですが、使い方がわからず困っているため質問させていただきます。 例として以下のようなデータがあるときに x y_1 y_2 1 3 9 2 7 2 3 2 3 4 8 6 5 3 1 xの値を横軸にとって縦軸にy_1とy_2の値を取ると 1つのグラフに2つの系列のグラフができると思うんですが、これを1つの系列ごとにグラフにして出したいです。 横軸は揃えて、縦軸は10~0を2回繰り返すようなグラフです。 説明がわかりにくいかもしれませんが、このようなグラフの作り方を教えていただきたいです。 よろしくお願いします。

  • 画像データの折れ線グラフを生データに変換するソフト

    画像データの折れ線グラフを生データに変換するソフトウェアなどはありませんか? 例えば、縦軸、横軸の値を設定し、線のところをプロットしていく形式などどんな方法でも良いので教えて頂けると大変助かります。

  • 画像化のプログラム

    今画像化のプログラムを組んでいます。 画像にするのは時系列データ(波形データ)の配列です。 つまり、画像の縦軸が波形の横軸(時間orデータ数)、画像の横軸が波形データの個数になります。 この画像化のプログラムがあまり分かりません。 考えてるのは、すべてのデータから最大値を求め,それで256(色)に正規化します。 その後,TColor等を用いて画像化すると思うのですがそこからがよく分かりません。 CやC++に詳しい方、どうか宜しくお願いします。

  • 二変数の平面グラフ

    二変数のグラフを平面で書く方法を探しています。 二変数といっても z=x^2+y^2 みたいなものではなく、 x・yともに独立した変数の二変数です。 縦軸・横軸ともに軸の取る値の範囲は決まっており、 軸の値の範囲の中で該当する場所にプロットするという感じです。 たとえば | x | y | | 2 | 4 | | 4 | 6 | | 7 | 9 | というデータなら、横軸が2のときは縦軸が4の位置に、横軸が4のときは縦軸が6の位置に といった具合でプロットし、線で結んでグラフにしたいのです。 Excelの散布図でやってみたのですが、データ郡が2個以上になるとできませんでした。 複数のデータ郡を一枚の平面グラフに収めたいので、方法を知っている方は回答をお願いします。

  • Excelグラフの軸

    エクセルでグラフをつくろうとしています。 添付した画像を見ていただきたいのですが、 縦軸はD列、横軸はC列の値にしたいと思っています。 縦軸はいいのですが、 横軸で、値と、グラフの間隔がおかしくなってしまいます。 例えば、一番右の1と0.62の幅と左の0と0.02の幅が同じになってしまいます。 これはどのようにすればきちんとした間隔にすることができるのでしょうか。 教えてください。よろしくお願いいたします。

専門家に質問してみよう