棒グラフの色を各棒ごとに手動で設定を行う方法


Espressシリーズで棒グラフを作成すると系列ごとに色分けされます。
before

これを個別に設定する場合にはFormat > Chart Optionsから”Unique Color Column”の設定を行います。
デザイナー設定

そして、それぞれの棒に対して色を設定することで下のように個別に設定が行えます。
after

このような設定は同様にAPIからも実施可能です。
APIから設定する場合に”Unique Color Column”の設定に対応するものが以下のAPIとなります。
//個別の棒に対する色の設定を有効化
chart.gethDataPoints().setUniqueColumnColorForColumnChart(true);
//カテゴリごとの色の統一を無効化
chart.gethDataPoints().setSingleColorForCategories(false);

これを使用することで以下のようにAPIからも個別に色を設定できます。
test

———–チャート作成サンプル——————————————-
QbChart.setEspressManagerUsed(false);

ColInfo colInfo = new ColInfo();
colInfo.series = -1;
colInfo.category = 0;
colInfo.value = 1;

String[] dataType = { “varchar”, “decimal” };
String[] fieldName = { “日”, “料金” };
String[][] records = { { “今日”, “1000” }, { “明日”, “1200” }, { “明後日”, “1350” } };

DbData data = new DbData(dataType, fieldName, records);

QbChart chart = new QbChart(parent, QbChart.VIEW2D, QbChart.COL, data, colInfo, null);

chart.gethDataPoints().setUniqueColumnColorForColumnChart(true);
chart.gethDataPoints().setSingleColorForCategories(false);

Color[] colors = { Color.red, Color.green, Color.blue };
chart.gethDataPoints().setColors(colors);
——————————————————————

また、以下のように条件で色を変更するようなこともできます。
test

———–チャート作成サンプル——————————————-
QbChart.setEspressManagerUsed(false);
ColInfo colInfo = new ColInfo();
colInfo.series = 1;
colInfo.category = 0;
colInfo.value = 2;

String[] dataType = { “varchar”, “varchar”,”Integer” };
String[] fieldName = { “日”,”飲み物”,”売り上げ” };
String[][] records = {
{ “今日”,”キウイ”, “800” }, { “今日”,”オレンジ”, “1500” }, { “今日”,”マンゴー”, “1230” },
{ “明日”, “キウイ”,”1200″ }, { “明日”, “オレンジ”,”900″ }, { “明日”,”マンゴー”, “850” },
{ “明後日”,”キウイ”,”1350″ },{ “明後日”,”オレンジ”,”950″ }, { “明後日”,”マンゴー”,”1200″ } };

DbData data = new DbData(dataType, fieldName, records);

QbChart chart = new QbChart(parent, QbChart.VIEW2D, QbChart.COL, data, colInfo, null);

// 色の設定を系列ではなく各棒ごとに行うよう設定
chart.gethDataPoints().setUniqueColumnColorForColumnChart(true);
chart.gethDataPoints().setSingleColorForCategories(false);

//データの項目数に合わせ色の配列を作成
Color dataColors[] = new Color[chart.gethInputData().getRowCount()];

try {
//各項目の値に合わせて色を設定
for(int i=0;i<chart.gethInputData().getRowCount();i++){
if((Integer)chart.gethInputData().getRow(i).getObject(3)<=1000){
dataColors[i]=Color.GREEN;
}
else{
dataColors[i]=Color.RED;
}
}
} catch (Exception e) {e.printStackTrace();}
//色の設定
chart.gethDataPoints().setColors(dataColors);
——————————————————————

関連するトピックス:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください