こんにちは、
特定の方法で曲線に色を付けようとしていますが、方法が見つかりません...
基本的に、ラベルによってグループ化されたカーブがいくつかあります。 すべての曲線をグループごとに異なる色で表示するにはどうすればよいですか?
これまで、グラフビルダーで「オーバーレイ」部分に「ラベル」を入れてみました...しかし、そのように、JMPはグループのすべての曲線を1つの曲線であるかのようにみなします。
JSL を使用して、より高度なことを試してみました (以下のコードを見つけてください)。 曲線を生成し、さまざまな線にアクセスして個別に色を付けることはできましたが、線とラベルの間のリンクが失われます。
以下の例では、ホンダのすべての曲線を赤、フォードの曲線を青、GM の曲線を紫で取得するにはどうすればよいでしょうか? (これはもちろん、グループの数ではなく、各グループにカーブがいくつあるかが事前にわからないことを前提としています)。
何か案は ?
// Generate a simple table as example
dt = New Table( "Untitled 9050",
Add Rows( 33 ),
New Column( "Time [years]",
Numeric,
Continuous,
Format( "Best", 2 ),
Set Values(
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
)
),
New Column( "car1",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.8, 1.6, 2.4, 3.2, 4, 4.8, 5.6, 6.4, 7.2, 8, 0, 1.2, 2.4, 3.6, 4.8,
6, 7.2, 8.4, 9.6, 10.8, 12, 0, 2.2, 4.4, 6.6, 8.8, 11, 13.2, 15.4, 17.6,
19.8, 22]
)
),
New Column( "car2",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Selected,
Set Values(
[0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 0, 1.4, 2.8, 4.2, 5.6, 7,
8.4, 9.8, 11.2, 12.6, 14, 0, 2.4, 4.8, 7.2, 9.6, 12, 14.4, 16.8, 19.2,
21.6, 24]
)
),
New Column( "car3",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.6, 1.2, 1.8, 2.4, 3, 3.6, 4.2, 4.8, 5.4, 6, 0, 1.6, 3.2, 4.8, 6.4,
8, 9.6, 11.2, 12.8, 14.4, 16, 0, 2.6, 5.2, 7.8, 10.4, 13, 15.6, 18.2,
20.8, 23.4, 26]
)
),
New Column( "car4",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.4, 0.8, 1.2, 1.6, 2, 2.4, 2.8, 3.2, 3.6, 4, 0, 1.8, 3.6, 5.4, 7.2,
9, 10.8, 12.6, 14.4, 16.2, 18, 0, 2.8, 5.6, 8.4, 11.2, 14, 16.8, 19.6,
22.4, 25.2, 28]
)
),
New Column( "Manufacturer",
Character( 16 ),
Nominal,
Set Values(
{"Honda", "Honda", "Honda", "Honda", "Honda", "Honda", "Honda", "Honda",
"Honda", "Honda", "Honda", "Ford", "Ford", "Ford", "Ford", "Ford",
"Ford", "Ford", "Ford", "Ford", "Ford", "Ford", "GM", "GM", "GM", "GM",
"GM", "GM", "GM", "GM", "GM", "GM", "GM"}
)
)
);
// stack the table
dt_Stack = dt << Stack(
columns( :car1, :car2, :car3, :car4 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Create a graph
MyGraph = Graph Builder(
Variables( X( :Name( "Time [years]" ) ), Y( :Data ), Overlay( :Label ) ),
Elements(
Points( X, Y, Legend( 1 ), Jitter( 1 ) ),
Smoother( X, Y, Legend( 2 ) )
)
);
// Access the lines and their properties
GraphsRep = Report( MyGraph );
nbp = GraphsRep[FrameBox( 1 )] << segCount( "LineSeg" );
// Modify the lines colors
For( n = 1, n <= nbp, n++,
s = GraphsRep[FrameBox( 1 )] << FindSeg( LineSeg( n ) );
s << Line Color( "Black" );
);4つのポイント:
スクリプト作成
@XanGreggおそらく、本当に必要なのは、1 つの大きなチャートではなく、JSL を使用して作成または変更されたプロットのグループであるということは正しいでしょう。 ただし、以下に試してみるべきことが 2 つあります。
線をプロットする
作成したいグラフをイメージするのが難しいのですが、1 つのグラフに多数の線があり、1 ページにわたる凡例のように思えます。 ピボットされたデータを使用して、以下のスクリプトの上部のグラフは、メーカーごとに色分けされた各車の線を作成します。使用できる線スタイルが 5 つだけなので、色以外を使用して凡例内の車種を識別することはできません。おそらく、このグラフを使用して車のメーカーを特定し、次に 2 番目のグラフを製造ごとにグループ化またはラップしてから、車ごとに色分けすることはできるでしょうか? これがこのスクリプトの一番下のグラフです。線をクリックすると、一番下のグラフでその線が識別されることを確認できます。
//Start with the long table in your first post.<BR />New Window("Two Graphs",
Graph Builder(
Size( 600, 400 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Time [years]" ) ),
Y( :Data ),
Overlay( :Name( "Man-Car" ) ),
Color( :Manufacturer )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
SendToReport(
Dispatch(
{},
"Time [years]",
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
),
Dispatch( {}, "Data", ScaleBox, {Label Row( Show Major Grid( 1 ) )} )
)
),
Graph Builder(
Size( 604, 448 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Time [years]" ) ),
Y( :Data ),
Wrap( :Manufacturer ),
Overlay( :Label )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
SendToReport(
Dispatch(
{},
"Time [years]",
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
),
Dispatch( {}, "Data", ScaleBox, {Label Row( Show Major Grid( 1 ) )} )
)
)
)
伝説
凡例にメーカーと車を一緒に表示するには、メーカー名と車名を連結する列を作成します。例えば:
New Column( "Man:Car",
Character,
"Nominal",
Formula( :Manufacturer || " " || :Label ),
Set Selected,
Set Display Width( 108 )
)
代わりに点をプロットする
別のアイデア: 多くの線を表示しようとする代わりに、実際に視覚化しようとしているものに各曲線を要約することはできますか?[私が想定している] 簡略化されたラインの例では、各車の勾配と切片を示す個別の点をプロットできます。チャート上の 2,000 個の点は、2,000 本の線よりも解釈が容易です。 ある時点で私はまだ伝説を諦めていますが)。ここでは、長いテーブルから始めて、上で作成した Man-Car 列によってモデルの適合を実行し、次に推定テーブルを結合テーブルとして保存し、テーブルを用語ごとに分割して、グラフ化しました。
