크기가 Arc2D.Pie
인 슬라이스로 변환 된 값이 있습니다 (예 : {1d,1d,2d,4d}
의 배열은 4 개의 슬라이스로 구성된 그래프를 생성하며 그 중 2 개는 8 번째 그 중 하나는 네 번째를 차지하고 그 중 하나는 절반을 차지하며, 함께 조각은 완전한 원을 형성하도록 배열됩니다). 슬라이스를 다른 표시기 (이름 등)에 쉽게 매핑 할 수 있도록하고 각성을 방지하기 위해 이러한 슬라이스 각각은 다르게 색이 지정됩니다. 이 같은 특히 눈에 띄는 같은 시안 대부분의 색상 (빨간색과 파란색, 몇 가지 이름), 일부 (잘 작동하는 동안,자바 : 더 나은 색상 선택 알고리즘
public Color getColor(int index, int total) {
return Color.getHSBColor((float) index/(float) total, 1f, 1f);
}
그러나 :
색상을 선택하는내 알고리즘은 초기에 아주 간단했다 두 세트의 두 번째 요소, 예 : {1d, 3d}
의 배열)은 너무 가볍기 때문에 육안으로 쉽게 볼 수 없습니다.
나는 이후 색상을 어둡게하는 시도에
return Color.getHSBColor((float) index/(float) total, 1f, 0.8f);
에 알고리즘을 변경; 그러나 시안 색은 여전히보기 힘들고 밝기를 낮추면 색을 구별하기가 어려워집니다.
누구나 쉽게 볼 수있는 색상의 스펙트럼을 생성하는 좋은, 바람직하게는 간단한 알고리즘을 갖고 있습니까? 좋은 테스트는 황색과 녹색의 색상을 생성하고 흰색 배경에서 쉽게 볼 수 있는지 확인하는 것입니다.
감사합니다.
WC
편집 : 지금 채도 및 밝기를 변화시킴으로써,보다 다양한 색상을 만들어 내 알고리즘을 개선했다. 색상이 잘 보이지 않습니다. 더 이상 아이디어가 없습니까?
새로운 알고리즘 :
float hue = (float) seriesIndex/(float) totalSeries;
int steps = 4;
float saturation = ((seriesIndex) % steps/(2f * steps)) + (0.5f);
float brightness = ((seriesIndex + ((steps + 1)/2f)) % (steps + 1f)/(2f * (steps + 1f))) + 0.5f;
Color c = Color.getHSBColor(hue, saturation, brightness);
예, 이것은 소량의 경우에 매우 유용하지만 한 번 지나면 15 개 항목을 지나치게 조금 어지럽게 보입니다. "색상 세분화"란 무엇을 의미합니까? – wchargin
나는 당신이 뚜렷하고 헷갈 리지 않는 많은 수의 색을 찾는 것으로 일반적으로 문제를 겪을 것이라고 생각한다. 색상 세분화는 여러 유형의 데이터를 알고리즘 적으로 음영 처리하기 위해 많은 필드에서 사용됩니다. 일반적으로 4 ~ 5 가지 색상 (예 : 의료용 이미징) 또는 색상이 서로 섞이도 록 (다양한 뼈의 밀도 표시) 의미가 아닙니다. 샘플 이미지를 게시 할 수 있습니까? 서로 다른 알고리즘 및 항목 수를 사용하여 어떻게 생겼는지 궁금합니다. – nmjohn
나는 색맹임을 명심하십시오. 어쨌든! 5 색으로 쉽게 구별 할 수 있습니다. [link] (http://img846.imageshack.us/img846/1955/5colors.png); 10 조금 더 어렵지 만 할 수 있습니다. [link] (http://img35.imageshack.us/img35/3991/tencolorsn.png); 30, 당신은 기회를 놓치지 않습니다 : [link] (http://img820.imageshack.us/img820/8392/30colors.png). – wchargin