- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
시작/종료 막대 차트는 어떻게 만드나요?
다음과 같은 데이터가 있다고 가정해 보겠습니다.
단계 | 시작 | 멈추다 |
믹서 | 0 | 2 |
히터1 | 1 | 12.3 |
인젝터1 | 4 | 4.5 |
믹서 | 6 | 8 |
히터2 | 10.3 | 13 |
인젝터1 | 12 | 12.5 |
히터1 | 16 | 25.4 |
믹서 | 18 | 20 |
히터2 | 23.4 | 30 |
믹서 | 24 | 26 |
팬 | 24 | 45 |
믹서 | 30 | 40 |
...그리고 저는 이런 줄거리(막대만)를 만들고 싶습니다:
GraphBuilder로 가능할까요? (참고로 이 이미지는 PowerPoint의 모형입니다)
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
안녕하세요 @B해리스 ,
당신이 파워포인트로 제시한 것을 직접 재현할 수는 없지만, 당신이 의도한 것과 비슷한 것을 가지고 있을 수도 있습니다.
귀하의 이미지와 달리 각 값 범위에 대해 고유 식별자가 필요하므로 다양한 범위가 완전히 정렬되지 않았습니다.
더 읽기 편하도록 막대를 확대하면 좋을 것 같습니다.
첨부된 데이터 테이블에서 스크립트를 살펴보실 수 있습니다.
편집: 레벨이 적은 ID 열을 사용하면 막대 그래프가 더 좋아 보입니다.
두 그래프 스크립트는 첨부된 데이터 테이블에 저장되었습니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
좋은 접근 방식이에요 : )
씌우다 대신 Y축에 중첩된 ID를 사용할 수도 있습니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
이 두 옵션은 모두 각 켜기/끄기가 자체 수평 행을 가지기 때문에 많은 공백을 생성하고, 내 사용 사례에는 켜기/끄기가 많을 수 있습니다. 막대 그래프에는 작동해야 할 것 같은 빨간색 삼각형 "겹침" 설정이 있지만 "전체"에서도 아무것도 하지 않는 것 같아서 막대를 수직으로 정렬하는 숨겨진 옵션이나 JSL 접근 방식이 있기를 바랐습니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
이와 같은 것에 대한 JSL 옵션은 많이 있습니다. Set Marker Expr이 가장 좋을 것입니다. 이것이 어떻게 사용되는지 알 수 있다면(설명서가 없습니다). Set Marker Draw Expr을 사용한 간단한 설명은 다음과 같습니다. 하나의 마커만 사용하여 더 간단하게 만들 수 있지만 두 개가 있으면 사용자가 양쪽 끝에서 행을 "선택"할 수 있습니다.
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(12),
Compress File When Saved(1),
New Column("Step",
Character,
"Nominal",
Set Property("Value Colors", {"fan" = -15113984, "heater1" = -5682409, "heater2" = -40563, "injector1" = -29362, "mixer" = -13983232}),
Set Values({"mixer", "heater1", "injector1", "mixer", "heater2", "injector1", "heater1", "mixer", "heater2", "mixer", "fan", "mixer"})
),
New Column("Start",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0, 1, 4, 6, 10.300000000000001, 12, 16, 18, 23.399999999999999, 24, 24, 30])
),
New Column("Stop",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([2, 12.300000000000001, 4.5, 8, 13, 12.5, 25.399999999999999, 20, 30, 26, 45, 40])
)
);
dt << Color or Mark by Column(:Step, Color(1), Marker(0));
gb = dt << Graph Builder(Variables(X(:Start), X(:Stop, Position(1)), Y(:Step), Color(:Step)),
Elements(Points(X(1), X(2), Y, Legend(7))),
SendToReport(
Dispatch({}, "400", ScaleBox,
{Legend Model(
7,
Properties(0, {Marker("FilledSquare")}, Item ID("fan", 1)),
Properties(1, {Marker("FilledSquare")}, Item ID("heater1", 1)),
Properties(2, {Marker("FilledSquare")}, Item ID("heater2", 1)),
Properties(3, {Marker("FilledSquare")}, Item ID("injector1", 1)),
Properties(4, {Marker("FilledSquare")}, Item ID("mixer", 1))
)}
),
Dispatch({}, "400", LegendBox,
{Legend Position({7, [0, 1, 2, 3, 4, -1, -1]})}
)
)
);
frame = Report(gb)[FrameBox(1)];
seg = (frame << FindSeg(Marker Seg(1)));
seg << Set Marker Draw Expr(
Function({this seg, this row, x, y, size, row state},
Fill Color(Color Of(Row State(this row)));
Rect(x, y + 0.3, x + (:Stop[this row] - x) / 2 + 0.1, y - 0.3, 1)
)
);
seg = (frame << FindSeg(Marker Seg(2)));
seg << Set Marker Draw Expr(
Function({this seg, this row, x, y, size, row state},
Fill Color(Color Of(Row State(this row)));
Rect(x - (x - :Start[this row]) / 2 - 0.1, y + 0.3, x, y - 0.3, 1)
)
);
그래프 작성에 필요한 데이터를 대대적으로 수정해야 하는 경우도 있을 것입니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
와우, 멋진 해결책이네요!
"/2"를 제거하고 겹치는 직사각형을 두 개 그리면 어떨까요? 그러면 시작 또는 종료가 가장자리에 가깝거나 그래프 밖에 있어도 막대가 안정적으로 유지됩니다.
- Chapters
- descriptions off, selected
- captions settings, opens captions settings dialog
- captions off, selected
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
This is a modal window. This modal can be closed by pressing the Escape key or activating the close button.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
기본적으로 이를 수행하는 방법은 무한합니다. 필요에 가장 적합한 방법을 선택하세요(또는 직접 만드세요). 평균 지점을 활용하면서 시작부터 끝까지 직사각형을 사용하면 시작/종료 마커를 쉽게 사용할 수 있고, 사용자가 클릭할 수 있도록 중앙에 추가 "마커"를 추가할 수 있습니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 시작/종료 막대 차트를 어떻게 만드나요?
그래프를 만드는 데 대한 내 접근 방식은 다음과 같습니다.
Names Default To Here( 1 );
dt = Current Data Table();
gb = Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :Start ), X( :Stop, Position( 1 ) ), Y( :Step ), Color( :Step ) ),
Elements( Points( X( 1 ), X( 2 ), Y, Legend( 12 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
12,
Properties( 5, {Marker( "FilledCircle" )}, Item ID( "Start", 1 ) ),
Properties( 6, {Marker( "FilledCircle" )}, Item ID( "Stop", 1 ) )
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Start - Stop Chart" )} )
)
);
// Remove Start and Stop from legend
lgnd = gb << Get Legend Display;
items = lgnd << Get Items;
For Each( {item}, items,
If( item << Get Label == "Start" | item << Get Label == "Stop",
item << Set Visible( 0 )
)
);
// Set default Value Colors if not set
if( isEmpty(dt:step << get property( "value colors" )),
dt:step << set property( "value colors", "" );
);
// Get the colors to use
colors = dt:step << get property( "value colors" );
// Find the labels for the Y Axis
Summarize( dt, levels = by( :step ) );
// Add a Graphics Script to create the bars on the graph
fb = Report( gb )[framebox( 1 )];
fb << add graphics script(
// Get the colors to use
colors = dt:step << get property( "value colors" );
For Each Row(
cpoint = Contains( levels, :step ) - 1;
Fill Color( Num( Word( 3, Char( colors[cpoint + 1] ), " " ) ) );
Rect( :start, cPoint + .4, :stop, cPoint - .4, 1 );
);
);
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.