cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
Choose Language Hide Translation Bar
View Original Published Thread

시작/종료 막대 차트는 어떻게 만드나요?

BHarris
Level VI

다음과 같은 데이터가 있다고 가정해 보겠습니다.


단계시작멈추다
믹서02
히터1112.3
인젝터144.5
믹서68
히터210.313
인젝터11212.5
히터11625.4
믹서1820
히터223.430
믹서2426
2445
믹서3040

...그리고 저는 이런 줄거리(막대만)를 만들고 싶습니다:


undefined


GraphBuilder로 가능할까요? (참고로 이 이미지는 PowerPoint의 모형입니다)

원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

7 REPLIES 7
Victor_G
Super User

Re: 시작/종료 막대 차트를 어떻게 만드나요?

안녕하세요 @B해리스 ,


당신이 파워포인트로 제시한 것을 직접 재현할 수는 없지만, 당신이 의도한 것과 비슷한 것을 가지고 있을 수도 있습니다.

undefined

귀하의 이미지와 달리 각 값 범위에 대해 고유 식별자가 필요하므로 다양한 범위가 완전히 정렬되지 않았습니다.
더 읽기 편하도록 막대를 확대하면 좋을 것 같습니다.

첨부된 데이터 테이블에서 스크립트를 살펴보실 수 있습니다.


편집: 레벨이 적은 ID 열을 사용하면 막대 그래프가 더 좋아 보입니다.

undefined

두 그래프 스크립트는 첨부된 데이터 테이블에 저장되었습니다.


원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

hogi
Level XII

Re: 시작/종료 막대 차트를 어떻게 만드나요?

좋은 접근 방식이에요 : )

씌우다 대신 Y축에 중첩된 ID를 사용할 수도 있습니다.

undefined


원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

BHarris
Level VI

Re: 시작/종료 막대 차트를 어떻게 만드나요?

이 두 옵션은 모두 각 켜기/끄기가 자체 수평 행을 가지기 때문에 많은 공백을 생성하고, 내 사용 사례에는 켜기/끄기가 많을 수 있습니다. 막대 그래프에는 작동해야 할 것 같은 빨간색 삼각형 "겹침" 설정이 있지만 "전체"에서도 아무것도 하지 않는 것 같아서 막대를 수직으로 정렬하는 숨겨진 옵션이나 JSL 접근 방식이 있기를 바랐습니다.

원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

jthi
Super User

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) 로 다시 번역됩니다.

hogi
Level XII

Re: 시작/종료 막대 차트를 어떻게 만드나요?

와우, 멋진 해결책이네요!

"/2"를 제거하고 겹치는 직사각형을 두 개 그리면 어떨까요? 그러면 시작 또는 종료가 가장자리에 가깝거나 그래프 밖에 있어도 막대가 안정적으로 유지됩니다.

disappears.mp4
Video Player is loading.
Current Time 0:00
Duration 0:00
Loaded: 0%
Stream Type LIVE
Remaining Time 0:00
 
1x
    • Chapters
    • descriptions off, selected
    • captions off, selected


      원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

      jthi
      Super User

      Re: 시작/종료 막대 차트를 어떻게 만드나요?

      기본적으로 이를 수행하는 방법은 무한합니다. 필요에 가장 적합한 방법을 선택하세요(또는 직접 만드세요). 평균 지점을 활용하면서 시작부터 끝까지 직사각형을 사용하면 시작/종료 마커를 쉽게 사용할 수 있고, 사용자가 클릭할 수 있도록 중앙에 추가 "마커"를 추가할 수 있습니다.

      undefined

      원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.

      txnelson
      Super User

      Re: 시작/종료 막대 차트를 어떻게 만드나요?

      그래프를 만드는 데 대한 내 접근 방식은 다음과 같습니다.

      undefined

      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) 로 다시 번역됩니다.