我想生成可以在饼图中吸引人的随机颜色。我对 GUI 的感觉很差。任何人都可以帮助编写一个函数来生成 6 种好的颜色,这些颜色在饼图中可能看起来不错随机顺序。现在我已经硬编码了。但我不喜欢那些颜色。请帮帮我。
plot.setSectionPaint("iPhone 2G", new Color(200, 255, 255));
plot.setSectionPaint("iPhone 3G", new Color(200, 200, 255));
我想生成可以在饼图中吸引人的随机颜色。我对 GUI 的感觉很差。任何人都可以帮助编写一个函数来生成 6 种好的颜色,这些颜色在饼图中可能看起来不错随机顺序。现在我已经硬编码了。但我不喜欢那些颜色。请帮帮我。
plot.setSectionPaint("iPhone 2G", new Color(200, 255, 255));
plot.setSectionPaint("iPhone 3G", new Color(200, 200, 255));
我建议不要尝试生成随机颜色,而是使用一些颜色图表中的一组颜色。
您有一些为图形和图表制作的表格颜色。
替代文字 http://www.sapdesignguild.org/goodies/diagram_guidelines/PALETTES/PALETTE1.GIF
另请参阅有关图表和图形的建议
(来源:sapdesignguild.org)
我的建议是不要生成随机颜色,原因有两个。首先,您必须采取额外的步骤来确保两种或多种颜色不会过于相似。其次,颜色是情绪化的。你不希望你的“这张图表告诉我一切都很好”的颜色是鲜红色。红色是警戒色;橙色和黄色也是如此。
在图表中使用颜色的一般建议是对一般数据使用不饱和的颜色,而对您想要引起注意的数据使用更亮的颜色。我不确定您的确切用例,但如果您想引起对 iPhone 3GS 销量异常高的关注,您可能需要在超过某个阈值时使用更亮的颜色。
作为入门的一种方式,我会使用VonC 答案中的颜色图表来手工挑选 5 种左右的颜色。您不应该在单个图表上显示太多不同的颜色,因为这将是查看者有效接收的太多数据。如果图表上有超过 7 个左右的数据集,那么很有可能您没有显示正确的图表!(但那是另一个故事……)
确保您选择的颜色之间没有冲突,并将它们排列成一个数组。现在,您每次为图表着色时都可以使用一个简单的列表。
public class ChartColorSource {
public static final Color[] COLORS;
static {
COLORS = new Color[ 6 ];
COLORS[0] = new Color( ... );
COLORS[1] = new Color( ... );
COLORS[2] = new Color( ... );
COLORS[3] = new Color( ... );
COLORS[4] = new Color( ... );
COLORS[5] = new Color( ... );
}
/**
* Assign a color from the standard ones to each category
*/
public static void colorChart( Plot plot, String[] categories ) {
if ( categories.length > COLORS.length ) {
// More categories than colors. Do something!
return;
}
// Use the standard colors as a list so we can shuffle it and get
// a different order each time.
List<Color> myColors = Arrays.asList( COLORS );
Collections.shuffle( myColors );
for ( int i = 0; i < categories.length; i++ ) {
plot.setSectionPaint( categories[i], myColors.get( i ) );
}
}
}