안녕하십니까,
특정 방식으로 곡선을 색칠하려고 하는데 방법을 찾지 못했습니다...
기본적으로 레이블로 그룹화된 몇 개의 곡선이 있습니다. 각 그룹에 대해 다른 색상으로 모든 곡선을 표시하려면 어떻게 해야 합니까?
지금까지 Graph Builder에서 "레이블"을 "오버레이" 부분에 넣었는데...그렇게 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가지 포인트:
스크립팅
@XanGregg 실제로 원하는 것은 하나의 큰 차트 대신 JSL을 사용하여 생성 또는 수정된 일부 플롯 그룹이라는 것이 맞을 것입니다. 다음은 시도해야 할 두 가지 사항입니다.
플로팅 라인
만들려는 그래프를 그리는 데 어려움을 겪고 있습니다. 하나의 차트에 많은 선이 있고 페이지 길이의 범례처럼 들립니다. 피벗된 데이터를 사용하여 아래 스크립트의 맨 위 차트는 제조업체별로 색상이 지정된 각 자동차에 대한 선을 만듭니다.작업할 선 스타일이 5개뿐이므로 색상 외에는 범례에서 자동차 유형을 식별할 수 없습니다.이 차트를 사용하여 자동차 제조업체를 식별한 다음 제조업체별로 그룹화하거나 포장한 다음 자동차별로 색상을 지정하는 두 번째 차트를 사용할 수 있습니까? 이것이 이 스크립트의 하단 차트입니다. 선을 클릭하면 하단 차트에서 식별된 것을 볼 수 있습니다.
//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 )
)
대신 플롯 포인트
또 다른 아이디어: 그렇게 많은 선을 표시하는 대신 각 곡선을 실제로 시각화하려는 것으로 요약할 수 있습니까?[i 가정] 단순화된 선 예제의 경우 기울기와 절편을 표시하는 각 자동차에 대한 개별 점을 그릴 수 있습니다.차트의 2,000개 점이 2,000개의 선보다 해석하기 쉽습니다. 그래도 어느 시점에서 나는 여전히 전설을 포기합니다).여기서는 긴 테이블로 시작하여 위에서 생성한 Man-Car 열을 '기준으로' 맞춤 모델을 만든 다음 추정 테이블을 결합 테이블로 저장하고 테이블을 용어별로 분할한 다음 그래프로 표시했습니다.
