2011-03-29 6 views
3

나는 그래픽을 배우기 위해 자바를 사용한 적이 없기 때문에 나는 지금 배우려고 노력 중이다.Java로 1 차원 플롯

기본적인 연습으로 숫자 배열에 배열에 포함 된 점을 표시하려고하지만 시작할 방법을 모르겠다.

나는 선을 그어야하는 다음과 같은 일을 오전 :

public void drawNumberLine(Graphics g) { 
    g.drawLine(0,0,100,0); 
} 

내가 라인에 포인트를 그릴 수있을 것입니다 방법을 모르는 나는 때문에 거기에서 갈 곳 확실하지. 몇 가지 튜토리얼을 읽었지만 모두 2D 플롯을 다루었 기 때문에 누군가가 올바른 방향으로 나를 안내 할 수 있는지 궁금합니다.

+1

1 차원 그림은 단일 점입니다. – RoflcoptrException

+1

그는 라인에 점을 그리기를 원한다고 생각합니다. 즉,'- | ----- | -----'와 같은 것입니다. – Thomas

+4

@Roflcoptr - 0 차원 플롯은 단일 점이며, 1 차원 플롯은 선입니다. – Ishtar

답변

1

배열의 번호 범위는 무엇입니까? 나는 당신이 당신의 100 개의 긴 줄에 맞추기 위해 그것을 축소시키고 자한다고 가정하고 있습니까? 단지 양수입니까? 이 경우, 이와 같은 것이 작동해야합니다.

//Find the max value for scaling purposes 
double max = Double.MIN_VALUE; 
double min = Double.MAX_VALUE 
for(double i : array){ 
    if(i > max) max = i; 
    if(i < min) min = i; 
} 


for(double i : array){ 
    //Replace 100 with a variable for how long the line is! 
    double scaled = ((i-min)/(max-min)) * 100; 

    Ellipse.Double circle = new EllipseDouble(width, height, scaled, 0); 

    g2d.draw(circle) 
} 

정수 배열 인 경우 반드시 정수 나누기를 피하십시오.

+0

나는 당신이 준 것과 사용 된 것을 사용했습니다. 비트 그리고 그것은 잘 일했다! 고맙습니다! – user415663

+0

방금 ​​수락 대답 버튼을 모르는 것처럼 보였습니다 :) 이전 질문도 살펴보고 가장 도움이되는 질문에 답을 입력해야합니다. :) (게시물 옆에있는 위/아래 화살표 아래의 확인란) –

1

글쎄, 기준선 크기 인 경우. 100 픽셀, 시작 값, 예 : 0 픽셀이면 점의 마커를 그릴 픽셀을 정확히 계산할 수 있습니다.

예 :

라인 (20)에 정수 (10)를 나타내고, 50 내지 150 화소들로부터 인출된다

x_offset = 50 
lower_bound = 10 
width = 100 pixels //(150 - 50) 
range = 10 //(20 - 10) 
pixels_per_step = width/range = 100/10 = 10 

따라서, 각 정수 마커 제가

x = x_offset + pixels_per_step * (i - lower_bound) => (replace constants) 
x = 50 + 10 * (i - 10) => (example for i = 15) 
x = 50 + 10 * (15 - 10) = 50 + 10 * 5 = 50 + 50 = 100 => draw marker 15 at 100 pixels 

연신 될 이렇게하면 시작할 수 있습니다. pixels_per_step 또는 i이 정수가 아닌 경우에 반올림해야 할 수도 있습니다.

관련 문제