こんにちは、
特定の方法で曲線に色を付けようとしていますが、方法が見つかりません...
基本的に、ラベルでグループ化された曲線がいくつかあります。 グループごとに異なる色ですべての曲線を表示するにはどうすればよいですか?
ここまでは「オーバーレイ」部分に「ラベル」を入れてグラフビルダーで試してみたのですが・・・そんな感じでJMPはグループ内の全ての曲線を一つの曲線のように考えてしまいます。
JSLを使用してより高度なことを試しました(以下のコードを見つけてください)。 曲線を生成し、さまざまな線にアクセスして個別に色を付けることができましたが、線とラベルの間のリンクが失われました。
以下の例では、Honda のすべての曲線を赤で、Ford の曲線を青で、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 つのポイント:
スクリプティング
@ザングレッグ1 つの大きなチャートではなく、JSL を使用して作成または変更されたプロットのグループが本当に必要であるということはおそらく正しいでしょう。 ただし、以下の2つのことを試してください。
線のプロット
あなたが作成したいグラフを思い浮かべるのに苦労しています. ピボットされたデータを使用して、下のスクリプトの上部のグラフは、メーカー別に色分けされた各車の線を作成します。使用するライン スタイルが 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 列を「使用して」フィット モデルを実行し、次に、推定テーブルを結合テーブルとして保存し、テーブルを項ごとに分割してグラフ化しました。
