人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

f=194*X<sup>-1.094</sup>*Y<sup>-0.278</sup>
という関数のグラフを作成したいと考えています。


この数式は、先日日本腎臓学会が発表した、日本人の糸球体濾過量(GFR)推定式で、
変数Xが血清クレアチニン量、変数Yが年齢になります。


http://www.jsn.or.jp/
にノモグラムはあるのですが、2次元で等高線がfの値となるようなグラフ*を作成するソフト(商用ソフト不可)はあるでしょうか?


*例として、このようなものです。(これはBMIの早見表です)
http://www.mmjp.or.jp/stethoscope/bmi.jpeg

●質問者: tatsu___kun
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:2次元 BMI クレアチニン グラフ グラム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● るびきち
●5ポイント

詳しくないですが、gnuplotやgraphvizはどうでしょうか?どちらもフリーソフトウェアです。

http://d.hatena.ne.jp/rubikitch

◎質問者からの返答

申し訳ございませんが、あなた様より詳しくありませんので、具体的かつ明瞭な例示がないと、回答いただいた内容が有益か否か判定できません。

それと、URIと回答内容の関係がよくわかりません。URIの参照先には有益と判断されるような内容は見つけられませんでした。


2 ● noir_k
●40ポイント

gnuplotの3次元プロットしたものを、真上から見れば、等高線になります。

http://t16web.lanl.gov/Kawano/gnuplot/plot3d.html


具体的には、以下のようにすればよいでしょう。


gnuplot> set ticslevel 0

gnuplot> splot 194*(x**(-1.094))*(y**(-0.278))

gnuplot> set contour

gnuplot> set cntrparam levels 10

gnuplot> set contour base

gnuplot> unset surface

gnuplot> set view 0,0

gnuplot> replot

◎質問者からの返答

ありがとうございました。

・・・何故か真上から見た図にならなかったです。


3 ● Mook
●50ポイント

ツールでも作成はできますが、EXCEL の3D グラフでも一応それらしいグラフができます。

下記は、数式を使用してセルにデータの表を作成し(A1:S17)、挿入から3Dグラフを選んで作成するやり方をマクロで実行した例です。


シートタブをクリックしコードの表示を選択して、そこに下記をコピーしてください。

シートに戻ってAlt+F8を押し、makeGraph を実行してみてください。

Sub makeGraph()
 Dim i&, j&, age&, creatinine#
 Dim sSheet As Worksheet
 Set gsheet = ActiveSheet
 
 i = 1
 For age = 5 To 80 Step 5
 i = i + 1
 gsheet.Cells(i, "A").Value = age
 Next
 
 j = 1
 For creatinine = 0.6 To 4.01 Step 0.2
 j = j + 1
 gsheet.Cells(1, j).Value = creatinine
 Next

 gsheet.Range("B2").Formula = "=194*B$1^(-1.094)*$A2^(-0.278)"
 gsheet.Range("B2").Copy
 gsheet.Range(gsheet.Cells(2, "B"), gsheet.Cells(i, j)).Select
 gsheet.Paste

 With Charts.Add
 .SetSourceData gsheet.Range("A1").CurrentRegion, PlotBy:=xlRows
 .Location Where:=xlLocationAsObject, Name:=gsheet.Name
 End With
 With ActiveChart
 .ChartType = xlSurface
 .HasTitle = True
 .ChartTitle.Characters.Text = "日本人の糸球体濾過量"
 .Axes(xlCategory).HasTitle = True
 .Axes(xlCategory).AxisTitle.Characters.Text = "クリアチニン"
 .Axes(xlSeries).HasTitle = True
 .Axes(xlSeries).AxisTitle.Characters.Text = "年齢"
 .Axes(xlValue).HasTitle = True
 .Axes(xlValue).AxisTitle.Characters.Text = "GFR"
 
 .Rotation = 120
 End With
End Sub

グラフ上を右クリックして、3D-グラフを選択すると、向きなど細かい調整が可能です。

http://www.relief.jp/itnote/archives/001713.php

◎質問者からの返答

ありがとうございました。

マクロで頑張れば出来るものですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ