1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Google Sheets API] グラフを追加・更新・削除する

Last updated at Posted at 2024-03-04

Google Sheets API v4(Java)を使用して、
スプレットシートにグラフを追加またはそのグラフを更新・削除する方法
についてご紹介します。

メニュー:「挿入」 ⇨ 「グラフ」
で追加できるグラフです。

Sheets APIでは、次のグラフを扱うことができます。
・基本的なチャート
  ・棒グラフ
  ・折れ線グラフ
  ・面グラフ
  ・縦 棒グラフ
  ・散布図
  ・コンボチャート
  ・階段状の面グラフ
・バブルチャート
・ローソク足チャート
・ヒストグラムチャート
・組織図
・円グラフ
・スコアカード チャート
・ツリーマップ チャート
・ウォーターフォールチャート

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する
を参照ください。

//例:
requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定

その他のGoogle Sheets APIは、下記の記事を参照ください。
⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた

No 目次
1 グラフを追加
1 グラフのサイズと配置位置
2 グラフの仕様
3 各グラフで使用するクラス
1 Colorクラス
2 ColorStyleクラス
3 TextFormatクラス
4 TextPositionクラス
5 GridRangeクラス
6 ChartDataクラス
7 LineStyleクラス
4 グラフクラス
1 BasicChartSpecクラス(基本的なチャート)
2 BubbleChartSpecクラス(ブルチャート)
3 CandlestickChartSpecクラス(ローソク足チャート)
4 HistogramChartSpecクラス(ヒストグラムチャート)
5 OrgChartSpecクラス(組織図)
6 PieChartSpecクラス(円グラフ)
7 ScorecardChartSpecクラス(スコアカード チャート)
8 TreemapChartSpecクラス(ツリーマップ チャート)
9 WaterfallChartSpecクラス(ウォーターフォールチャート)
2 グラフを更新
3 グラフを削除

1. グラフを追加

グラフを追加します。

グラフの追加時に下記3つを指定します。
・グラフのID。既に存在するIDならエラー。指定がない場合は自動採番。
・グラフのサイズ、配置位置
・グラフの仕様
下2つについて、それぞれ順に説明していきます。

サンプル コード

public Request addChart(Integer sheetId) {
    Request request = new Request();

    EmbeddedChart chart = new EmbeddedChart();
    
    //グラフのID。指定がない場合は自動採番
    chart.setChartId(1);
    
    //グラフのサイズ、配置位置
    chart.setPosition(getEmbeddedObjectPosition(sheetId));
    
    //グラフの仕様
    chart.setSpec(getChartSpec());
    
    AddChartRequest r = new AddChartRequest();
    r.setChart(chart);

    request.setAddChart(r);
    return request;
}

1.1. グラフのサイズと配置位置

EmbeddedObjectPositionクラスで指定します。
位置の指定は、
既存のシートに配置する場合と
新しいシートに配置する場合
があります。

既存のシートに配置する場合
既存のシートにグラフを配置します。

配置する位置は、指定したセル(右下)からのオフセット値(ピクセル)になります。
例えば、
4行目D列  : setRowIndex(3)、setColumnIndex(3)
(x,y)=(0,0) : setOffsetXPixels(0)、setOffsetYPixels(0)
と指定した場合、4列目D列のセルの右下に配置されます。

新しいシートに配置する
新しいシートに配置します。
シートのタイプが「GRID」ではなく、「OBJECT」として新しいシートが生成されます。
setOverlayPositionの設定はできません。

・シートIDを指定する
  setSheetId()にシートIDを設定します。
  既に存在するシートIDを設定するとエラーになります。

・シートIDを指定しない(自動採番)
  setNewSheet()にtrueを設定します。

サンプル コード

public EmbeddedObjectPosition getEmbeddedObjectPosition(Integer sheetId) {
    EmbeddedObjectPosition pos = new EmbeddedObjectPosition();

    //グラフを配置するシートID
    //pos.setSheetId(sheetId);
    
    //新しいシートに配置するか?
    pos.setNewSheet(false);

    OverlayPosition overlay = new OverlayPosition();
    //起点とするセルの指定
    GridCoordinate grid = new GridCoordinate();
    grid.setSheetId(sheetId); 			//配置するシートID
    grid.setRowIndex(0); 				//開始行(0スタート)
    grid.setColumnIndex(0); 			//開始列(0スタート)
    overlay.setAnchorCell(grid);		//オブジェクトを固定するセル
    
    //起点とするセルからのオフセット値
    overlay.setOffsetXPixels(0);		//開始X座標。
    overlay.setOffsetYPixels(0);		//開始Y座標。
    overlay.setHeightPixels(371);		//グラフの高さ。省略時は371px
    overlay.setWidthPixels(600);		//グラフの幅。省略時は600px
    pos.setOverlayPosition(overlay);
    
    return pos;
}

1.2. グラフの仕様

ChartSpecクラスで設定します。
設定内容は次の通りです。引数のクラスについては後述します。

設定内容 設定メソッド 引数
タイトル テキスト setTitle 文字列
タイトルのテキスト形式 setTitleTextFormat TextFormat
タイトルのテキストの
水平方向の配置位置
setTitleTextPosition TextPosition
サブタイトル テキスト setSubtitle 文字列
サブタイトルのテキスト形式 setSubtitleTextFormat TextFormat
サブタイトルのテキストの
水平方向の配置位置
setSubtitleTextPosition TextPosition
説明文 setAltText 文字列
グラフ全体の背景色 setBackgroundColor
または
setBackgroundColorStyle
Color

ColorStyle
デフォルトで使用するフォントの名前 setFontName 文字列
非表示の行、列の表示方法 setHiddenDimensionStrategy 文字列(※1)
最大化 setMaximized boolean
グラフの仕様 (※2)

(※1) 非表示の行、列をグラフでどのように使用するかを指定します。

設定値 内容
SKIP_HIDDEN_ROWS_AND_COLUMNS 非表示の行と列は使用しない
SKIP_HIDDEN_ROWS 非表示の行だけを使用しない
SKIP_HIDDEN_COLUMNS 非表示の列だけを使用しない
SHOW_ALL どちらも使用する

(※2) 設定可能なグラフの種類とクラスです。

チャート チャートクラス 設定メソッド
基本的なチャート BasicChartSpec setBasicChart
バブルチャート BubbleChartSpec setBubbleChart
ローソク足チャート CandlestickChartSpec setCandlestickChart
ヒストグラムチャート HistogramChartSpec setHistogramChart
組織図 OrgChartSpec setOrgChart
円グラフ PieChartSpec setPieChart
スコアカード チャート ScorecardChartSpec setScorecardChart
ツリーマップ チャート TreemapChartSpec setTreemapChart
ウォーターフォールチャート WaterfallChartSpec setWaterfallChart

サンプル コード

public ChartSpec getChartSpec() {
    ChartSpec spec = new ChartSpec();

    //タイトル テキスト
    spec.setTitle("タイトル");
    
    //タイトルのテキスト形式
    spec.setTitleTextFormat(new TextFormat());
    
    //タイトルのテキストの水平方向の配置位置
    spec.setTitleTextPosition(new TextPosition());
    
    //サブタイトル テキスト
    spec.setSubtitle("サブタイトル");
    
    //サブタイトルのテキスト形式
    spec.setSubtitleTextFormat(new TextFormat());
    
    //サブタイトルのテキストの水平方向の配置位置
    spec.setSubtitleTextPosition(new TextPosition());
    
    //説明文(アクセシビリティのために使用)
    spec.setAltText("これはテーブルですよ");
    
    //グラフ全体の背景色
    spec.setBackgroundColor(new Color());
    
    //デフォルトで使用するフォントの名前
    spec.setFontName("Arial");
    
    //非表示の行、列の表示方法
    spec.setHiddenDimensionStrategy("SHOW_ALL");
    
    //最大化
    spec.setMaximized(true);
    
    //グラフの仕様
    spec.setBasicChart(new BasicChartSpec());
    
    return spec;
}

1.3. 各グラフで使用するクラス

まずは、共通で使えるクラスを説明します。
その後に各々のグラフのクラスについて説明していきます。

1.3.1. Colorクラス

色を表すクラスです。
RGBAの値を0.0〜1.0で指定します。

サンプル コード

Color color = new Color();

color.setRed(1.0f);
color.setGreen(0f);
color.setBlue(0f);
color.setAlpha(0f);

1.3.2. ColorStyleクラス

Colorクラスで設定できる内容か、テーマカラーを設定できます。
指定できるテーマカラーは次のtypeになります。

type 種類
TEXT テキスト
BACKGROUND グラフの背景
ACCENT1 アクセント1
ACCENT2 アクセント2
ACCENT3 アクセント3
ACCENT4 アクセント4
ACCENT5 アクセント5
ACCENT6 アクセント6
LINK ハイパーリンク

サンプル コード

ColorStyle colorStyle = new ColorStyle();

//どちらか一方のみ指定

//色を指定
//colorStyle.setRgbColor(new Color());

//テーマカラーを指定
colorStyle.setThemeColor("TEXT");

1.3.3. TextFormatクラス

テキストの書式を設定します。
設定可能な内容は下記サンプルコードに全て載せています。

サンプル コード

TextFormat format = new TextFormat();

format.setBold(true);	           //ボールドか?
format.setItalic(true);            //イタリックか?
format.setFontSize(0);	           //フォントサイズ
format.setFontFamily("Arial");	   //フォントファミリー名
format.setStrikethrough(false);    //取り消し線ありか?
format.setUnderline(false);		   //アンダーラインありか?

//テキストの色。どちらかの指定
format.setForegroundColor(new Color());
//format.setForegroundColorStyle(ColorStyle());

1.3.4. TextPositionクラス

テキストの水平方向の位置を指定します。
指定するメソッドは1つのみsetHorizontalAlignmentです。

align 水平方向位置
LEFT 左寄せ
CENTER 中央寄せ
RIGHT 右寄せ

サンプル コード

TextPosition position = new TextPosition();

position.setHorizontalAlignment("CENTER");

1.3.5. GridRangeクラス

シートIDとシート内の範囲を設定します。

サンプル コード

GridRange range = new GridRange();

range.setSheetId(0);          //シートID
range.setStartRowIndex(2);    //開始行(0スタート)
range.setEndRowIndex(4);      //終了行(1スタート)
range.setStartColumnIndex(1); //開始列(0スタート))
range.setEndColumnIndex(3);   //終了列(1スタート)

1.3.6. ChartDataクラス

グラフが読み取るセルのデータ範囲を設定します。

基本は1つのGridRangeクラスを設定しますが、
複数の範囲(GridRange)を設定する場合は
ドメインおよび系列全体にわたって順序正しく連続している必要があります。

サンプル コード

ChartData data = new ChartData();

ChartSourceRange source = new ChartSourceRange();
List<GridRange> ranges = new ArrayList<>();
ranges.add(new GridRange());
source.setSources(ranges);

data.setSourceRange(source);

1.3.7. LineStyleクラス

線のスタイルと太さを設定します。

type 種類
INVISIBLE 線を表示しない
SOLID 実践
DOTTED 点線
MEDIUM_DASHED 破線
MEDIUM_DASHED_DOTTED 一点鎖線
LONG_DASHED 長い破線
LONG_DASHED_DOTTED 長い一点鎖線

サンプル コード

LineStyle style = new LineStyle();

style.setType("SOLID");  //線の種類
style.setWidth(10);     //線の太さ (ピクセル単位)。

1.4. グラフクラス

次からはグラフクラスについて説明していきます。

1.4.1. BasicChartSpecクラス

「基本的なチャート」の設定をします。

BasicChartSpecクラスでは以下のグラフが指定できます。
setChartType("")で指定します。

chartType グラフの種類
BAR 棒グラフ
LINE 折れ線グラフ
AREA 面グラフ
COLUMN 縦 棒グラフ
SCATTER 散布図
COMBO コンボチャート
STEPPED_AREA 階段状の面グラフ

setCompareMode("")で、
データorグラフ領域にマウスを移動したときのツールヒントの動作を指定できます。

mode 動作
DATUM フォーカスされたデータ要素のみが強調表示され、
ツールチップに表示されます
CATEGORY 同じカテゴリ (ドメイン値など) を持つすべてのデータ要素が
強調表示され、ツールチップに表示されます

setLegendPosition("")で、
凡例の表示する位置を指定できます。

position 表示位置
BOTTOM_LEGEND グラフの下部に表示
LEFT_LEGEND グラフの左側に表示
RIGHT_LEGEND グラフの右側に表示
TOP_LEGEND グラフの上部に表示
NO_LEGEND 表示しない

setStackedType("")で、
垂直方向のチャートの積み上げタイプを指定できます。
setChartTypeが、LINE(折れ線グラフ)、SCATTER(散布図)の場合は使用できません。

type 積み上げ方法
NOT_STACKED 積み重ねられない
STACKED 系列値は積み重ねられ、各値はその下の値の上から垂直方向にレンダリング
PERCENT_STACKED 垂直スタックはグラフの上部に達するまで引き伸ばされ、値が互いのパーセンテージとしてレイアウト

サンプル コード

BasicChartSpec chart = new BasicChartSpec();

//チャート上の軸
chart.setAxis(new ArrayList<BasicChartAxis>());

//チャートのタイプ
chart.setChartType("LINE");

//ツールヒントの動作
chart.setCompareMode("");

//これがグラフ化しているデータのドメイン。単一のドメインのみがサポートされます。
chart.setDomains(new ArrayList<BasicChartDomain>());

//データ内の「ヘッダー」である行または列の数。
chart.setHeaderCount(0);

//系列内の一部の値が欠落によるグラフのギャップの表示解消するか?
//折れ線グラフ、面グラフ、複合グラフのみ
chart.setInterpolateNulls(true);

//凡例の表示位置
chart.setLegendPosition("BOTTOM_LEGEND");

//デフォルトですべての線を直線でレンダリングするか?
//折れ線グラフのみ
chart.setLineSmoothing(true);

//このグラフが視覚化しているデータ
chart.setSeries(new ArrayList<BasicChartSeries>());

//垂直方向のチャートの積み上げタイプ
chart.setStackedType("NOT_STACKED");

//グラフを3Dにするか?
//棒グラフ、縦棒グラフのみ
chart.setThreeDimensional(true);

・setAxis(List<BasicChartDomain>)
で、チャート上の軸を設定します。

BasicChartAxisクラスのsetPosition("")で、
軸の位置を設定できます。

position 軸の位置
BOTTOM_AXIS グラフの下部に表示される軸。
ほとんどのグラフでは、これが標準の主軸。
棒グラフの場合、これは副軸
LEFT_AXIS チャートの左側に表示される軸。
ほとんどのグラフでは、これは副軸。
棒グラフの場合、これが標準の主軸
RIGHT_AXIS チャートの右側に表示される軸。
ほとんどのグラフでは、これは副軸。
棒グラフの場合、これは珍しい主軸

ChartAxisViewWindowOptionsクラスのsetViewWindowMode("")で、;
ビューウィンドウのモードを設定できます。

mode モードの内容
DEFAULT_VIEW_WINDOW_MODE このグラフ タイプのシート エディターで使用されるデフォルトのビュー ウィンドウ モード
EXPLICIT 最小値と最大値に正確に従う。
PRETTY グラフの見栄えを良くする最小値と最大値を選択する。
このモードでは、最小値と最大値の両方が無視される

サンプル コード

List<BasicChartAxis> axis = new ArrayList<>();

BasicChartAxis a = new BasicChartAxis();
//タイトルの形式。軸がドメインに関連付けられていない場合にのみ有効
a.setFormat(new TextFormat());

//この軸の位置
a.setPosition("BOTTOM_AXIS");

//この軸のタイトル
a.setTitle("");

//軸のタイトルのテキスト位置。
a.setTitleTextPosition(getTextPosition());

//この軸のビュー ウィンドウ オプション。
    ChartAxisViewWindowOptions viewWindowOptions = new ChartAxisViewWindowOptions();
    //このビュー ウィンドウに表示される最大数値
    viewWindowOptions.setViewWindowMax(0d);
    
    //このビュー ウィンドウに表示される最小の数値
    viewWindowOptions.setViewWindowMin(0d);
    
    //ビューウィンドウのモード。
    viewWindowOptions.setViewWindowMode("PRETTY");
a.setViewWindowOptions(viewWindowOptions);

axis.add(a);

・setDomains(List<BasicChartDomain>)
で、グラフ化しているデータのドメインを設定します。

サンプル コード

List<BasicChartDomain> domain = new ArrayList<>();

BasicChartDomain d = new BasicChartDomain();

//ドメインのデータ。
//たとえば、株価の経時的なグラフを作成する場合、これは日付を表すデータになる。
d.setDomain(new ChartData());

//ドメイン値 (横軸)の順序を逆にするか?
d.setReversed(true);

domain.add(d);

・setSeries(List<BasicChartSeries>)
で、グラフが視覚化しているデータを設定します。

BasicChartSeriesクラスのsetType("")で
シリーズのタイプを設定できます。
chartTypeがCOMBO(コンボチャート)のときのみ有効です。

type グラフ
LINE 折れ線グラフ
AREA 面グラフ
COLUMN 縦 棒グラフ

BasicChartSeriesクラスのsetTargetAxis("")で、
この系列の値の範囲を指定する短軸を設定できます。

axis 軸の位置
BOTTOM_AXIS グラフの下部に表示される軸。
ほとんどのグラフでは、これが標準の主軸。
棒グラフの場合、これは副軸
LEFT_AXIS チャートの左側に表示される軸。
ほとんどのグラフでは、これは副軸。
棒グラフの場合、これが標準の主軸
RIGHT_AXIS チャートの右側に表示される軸。
ほとんどのグラフでは、これは副軸。
棒グラフの場合、これは珍しい主軸

サンプル コード

List<BasicChartSeries> series = new ArrayList<>();

BasicChartSeries b = new BasicChartSeries();

//このシリーズに関連付けられた要素 (棒、線、点など) の色
b.setColor(new Color());  //または setColorStyle

//このシリーズの線のスタイル
//chartType が AREA、LINE、SCATTERの場合のみ
b.setLineStyle(new LineStyle());

//このグラフ シリーズで視覚化されているデータ
b.setSeries(new ChartData());

//この系列の値の範囲を指定する短軸
b.setTargetAxis("BOTTOM_AXIS");

//このシリーズのタイプ
//b.setType("");

series.add(b);

1.4.2. BubbleChartSpecクラス

「バブルチャート」の設定をします。

setLegendPosition("")で
チャートの凡例を描画する場所を設定できます。

position 表示位置
BOTTOM_LEGEND グラフの下部に表示
LEFT_LEGEND グラフの左側に表示
RIGHT_LEGEND グラフの右側に表示
TOP_LEGEND グラフの上部に表示
NO_LEGEND 表示しない

サンプル コード

BubbleChartSpec chart = new BubbleChartSpec();

//チャートの凡例を描画する場所
chart.setLegendPosition("BOTTOM_LEGEND");

//バブルの境界線の色。
chart.setBubbleBorderColor(new Color());  //または setBubbleBorderColorStyle

//バブルラベルを含むデータ
chart.setBubbleLabels(new ChartData());

//バブルの最大半径サイズ (ピクセル単位)
chart.setBubbleMaxRadiusSize(0);

//バブルの最小半径サイズ (ピクセル単位)
chart.setBubbleMinRadiusSize(0);

//不透明度
chart.setBubbleOpacity(0f);

//バブル内のテキストの形式。下線と取り消し線は無効
chart.setBubbleTextStyle(new TextFormat());

//バブルのX値を含むデータ
chart.setDomain(new ChartData());

//バブルのY値を含むデータ
chart.setSeries(new ChartData());

//バブルのサイズを含むデータ(オプション)
chart.setBubbleSizes(new ChartData());

//バブル グループ ID を含むデータ(オプション)
//ただし、setBubbleSizesが指定されている場合は必須
chart.setGroupIds(new ChartData());

1.4.3. CandlestickChartSpecクラス

「ローソク足チャート」の設定をします。

サンプル コード

CandlestickChartSpec chart = new CandlestickChartSpec();

//ローソク足チャートのデータ(1つのみ設定可能)
chart.setData(new ArrayList<CandlestickData>());

//ローソク足チャートのドメインデータ (横軸)。
//文字列データは離散ラベルとして扱われ、その他のデータは連続値として扱われる。
chart.setDomain(new CandlestickDomain());

・setData(new ArrayList())
で、ローソク足チャートのデータを設定します。
リストですが1つのみ設定が可能です。

サンプル コード

List<CandlestickData> datas = new ArrayList<>();
CandlestickData data = new CandlestickData();

//各ローソク足の終値/最終値の範囲データ (縦軸)
//ローソク本体の上部
data.setCloseSeries(new CandlestickSeries().setData(new ChartData()));

//各ローソク足の始値/初期値の範囲データ (縦軸)。
//ローソク本体の下部
data.setOpenSeries(new CandlestickSeries().setData(new ChartData()));

//各ローソク足の高値/最大値の範囲データ (縦軸)
//ローソクの中心線の上部
data.setHighSeries(new CandlestickSeries().setData(new ChartData()));

//各ローソク足の最低値/最低値の範囲データ (縦軸)
//ローソクの中心線の下部
data.setLowSeries(new CandlestickSeries().setData(new ChartData()));

datas.add(data);

・setDomain(new CandlestickDomain())
で、ローソク足チャートのドメインデータを設定します。

サンプル コード

CandlestickDomain domain = new CandlestickDomain();
//CandlestickDomain のデータ
domain.setData(new ChartData());

//ドメイン値 (横軸)の順序を逆にするか?
domain.setReversed(true);

1.4.4. HistogramChartSpecクラス

「ヒストグラムチャート」の設定をします。

setLegendPosition("")で、
凡例の表示する位置を指定できます。

position 表示位置
BOTTOM_LEGEND グラフの下部に表示
LEFT_LEGEND グラフの左側に表示
RIGHT_LEGEND グラフの右側に表示
TOP_LEGEND グラフの上部に表示
NO_LEGEND 表示しない

サンプル コード

HistogramChartSpec chart = new HistogramChartSpec();

//バケットサイズ
chart.setBucketSize(0d);

//チャートの凡例の位置
chart.setLegendPosition("RIGHT_LEGEND");

//外れ値パーセンタイル
chart.setOutlierPercentile(0d);

//ヒストグラム シリーズのデータ
chart.setSeries(new ArrayList<HistogramSeries>());

//各列の項目間に水平の区切り線を表示するか?
chart.setShowItemDividers(true);

・setSeries(new ArrayList())
で、ヒストグラム シリーズのデータを設定します。

サンプル コード

List<HistogramSeries> series = new ArrayList<>();

HistogramSeries h = new HistogramSeries();
//各バケット内のこのシリーズを表す列の色
h.setBarColor(new Color());

//ヒストグラム シリーズのデータ​​
h.setData(getChartData());

series.add(h);

1.4.5. OrgChartSpecクラス

「組織図」の設定をします。

setNodeSize("")で、
組織図のノードサイズを設定できます。

node size 大きさ
SMALL 小さい組織図のノード サイズ
MEDIUM 中程度の組織図のノード サイズ
LARGE 組織図のノード サイズが大きい

サンプル コード

OrgChartSpec chart = new OrgChartSpec();

//チャート内のすべてのノードのラベルを含むデータ
chart.setLabels(new ChartData());

//組織図のノードの色
chart.setNodeColor(new Color());  //または setNodeColorStyle

//選択した組織図ノードの色
chart.setSelectedNodeColor(new Color());//または setSelectedNodeColorStyle

//組織図のノードのサイズ
chart.setNodeSize("MEDIUM");

//対応するノードの親のラベルを含むデータ(オプション)
chart.setParentLabels(new ChartData());

/対応するノードのツールチップを含むデータ(オプション)
chart.setTooltips(new ChartData());

1.4.6. PieChartSpecクラス

「円グラフ」の設定をします。

setLegendPosition("")で、
凡例の表示する位置を指定できます。

position 表示位置
BOTTOM_LEGEND グラフの下部に表示
LEFT_LEGEND グラフの左側に表示
RIGHT_LEGEND グラフの右側に表示
TOP_LEGEND グラフの上部に表示
NO_LEGEND 表示しない
LABELED_LEGEND 各パイのスライスにはラベルが付いている

サンプル コード

PieChartSpec chart = new PieChartSpec();

//円グラフの領域をカバーするデータ
chart.setDomain(new ChartData());

//円グラフの唯一のシリーズを網羅したデータ
chart.setSeries(new ChartData());

//凡例の表示する位置
chart.setLegendPosition("BOTTOM_LEGEND");

//円グラフの穴のサイズ
chart.setPieHole(10d);

//円が3次元か?
chart.setThreeDimensional(true);

1.4.7. ScorecardChartSpecクラス

「スコアカード チャート」の設定をします。

setAggregateType("")で、
データの集計タイプを指定できます。

type 集計タイプ
AVERAGE 平均集計関数
COUNT カウント集計関数
MAX 最大の集計関数
MEDIAN 中央値集計関数
MIN 最小の集計関数
SUM 合計集計関数

setNumberFormatSource("")で、
スコアカード グラフで使用される数値形式のソースを指定できます。

source 数値形式のソース
FROM_DATA データから数値の書式設定を継承
CUSTOM setCustomFormatOptions()で設定された
カスタム書式設定を適用

サンプル コード

ScorecardChartSpec chart = new ScorecardChartSpec();

//データの集計タイプ(オプション)
chart.setAggregateType("COUNT");

//スコアカード キーとベースライン値をスケールする値(オプション)
chart.setScaleFactor(10d);

//スコアカードのベースライン値のデータ(オプション)
chart.setBaselineValueData(new ChartData());

//ベースライン値の書式設定オプション
//setBaselineValueDataが設定されている場合のみ有効
chart.setBaselineValueFormat(new BaselineValueFormat());

//キー値の書式設定オプション
chart.setKeyValueFormat(new KeyValueFormat());

//スコアカードのキー値のデータ
chart.setKeyValueData(new ChartData());

//スコアカード グラフで使用される数値形式のソース(オプション)
chart.setNumberFormatSource("FROM_DATA");

//スコアカード グラフの数値キー/ベースライン値のカスタム書式設定オプション
//setNumberFormatSource("CUSTOM")の場合のみ有効
chart.setCustomFormatOptions(new ChartCustomNumberFormatOptions());

・setBaselineValueFormat(new BaselineValueFormat())
で、ベースライン値の書式設定オプションを設定します。
setBaselineValueData()が設定されている場合のみ有効です。

サンプル コード

BaselineValueFormat format = new BaselineValueFormat();

//キー値とベースライン値の比較タイプ
format.setComparisonType("");

//ベースライン値の後に追加される説明(オプション)
format.setDescription("");

//ベースライン値がキー値の負の変化を表す場合に使用される色(オプション)
format.setNegativeColor(new Color());  //または setNegativeColorStyle

//ベースライン値の水平方向のテキストの位置(オプション)
format.setPosition(new TextPosition());

//ベースライン値がキー値の正の変化を表す場合に使用される色(オプション)
format.setPositiveColor(new Color()); //または setPositiveColorStyle

//ベースライン値のテキスト書式設定オプション
format.setTextFormat(getTextFormat());

・setKeyValueFormat(new KeyValueFormat())
で、キー値の書式設定オプションを設定します。

サンプル コード

KeyValueFormat key = new KeyValueFormat();

//キー値の水平方向のテキストの位置(オプション)
key.setPosition(getTextPosition());

//キー値のテキスト書式設定オプション。
key.setTextFormat(getTextFormat());

・setCustomFormatOptions(new ChartCustomNumberFormatOptions())
で、スコアカード グラフの数値キー/ベースライン値のカスタム書式設定オプション
を設定します。
setNumberFormatSource("CUSTOM")を設定している場合のみ有効です。

サンプル コード

ChartCustomNumberFormatOptions option = new ChartCustomNumberFormatOptions();

//チャート属性の先頭に追加されるカスタム接頭辞(オプション)
option.setPrefix("");

//チャート属性に追加されるカスタム接尾辞(オプション)
option.setSuffix("");

1.4.8. TreemapChartSpecクラス

「ツリーマップ チャート」の設定をします。

サンプル コード

TreemapChartSpec chart = new TreemapChartSpec();

//各ツリーマップ データ セルの背景色を決定するデータ(オプション)
chart.setColorData(new ChartData());

//ツリーマップ チャートのデータ セルのカラー スケール
chart.setColorScale(new TreemapChartColorScale());

//ヘッダーセルの背景色
chart.setHeaderColor(new Color());  //または setHeaderColorStyle

//ツールチップを非表示にするか?
chart.setHideTooltips(true);

//ラベル付きレベルを超える追加のデータレベルの数。
chart.setHintedLevels(0);

//ツリーマップのセルのラベルを含むデータ
chart.setLabels(new ChartData());

//チャートに表示するデータ レベルの数
chart.setLevels(2);

//可能な最大データ値
chart.setMaxValue(0d);

//可能な最小のデータ値
chart.setMinValue(0d);

//ツリーマップ セルの親ラベル
chart.setParentLabels(new ChartData());

//各ツリーマップ データ セルのサイズを決定するデータ
chart.setSizeData(new ChartData());

//チャート上のすべてのラベルのテキスト形式
chart.setTextFormat(new TextFormat());

・setColorScale(new TreemapChartColorScale())
で、ツリーマップチャートのデータ セルのカラースケールを設定します。

サンプル コード

TreemapChartColorScale scale = new TreemapChartColorScale();

//maxValue 以上の色の値を持つセルの背景色
//デフォルトは#109618
scale.setMaxValueColor(new Color());

//minValue と maxValue の間の中間の色の値を持つセルの背景色
//デフォルトは #efe6dc
scale.setMidValueColor(new Color());

//minValue 以下の色の値を持つセルの背景色
//デフォルトは #dc3912
scale.setMinValueColor(new Color());

//色データが関連付けられていないセルの背景色
//デフォルトは #000000
scale.setNoDataColor(new Color());

1.4.9. WaterfallChartSpecクラス

「ウォーターフォールチャート」の設定をします。

setStackedType("")で、
積み上げ方法を指定できます。

type 積み上げ方法
STACKED 同じドメイン (横軸) の値に対応する値が縦に積み上げ
SEQUENTIAL シリーズは横軸に沿って広がる

サンプル コード

WaterfallChartSpec chart = new WaterfallChartSpec();

//積み上げ方法
chart.setStackedType("SEQUENTIAL");

//列間の接続線を表示するか?
chart.setHideConnectorLines(true);

//最初の値を合計とするか?
chart.setFirstValueIsTotal(true);

//コネクタ線のスタイル
chart.setConnectorLineStyle(new LineStyle());

//ウォーターフォール チャートのドメイン データ (横軸)
chart.setDomain(new WaterfallChartDomain());

//ウォーターフォール チャートが視覚化しているデータ。
chart.setSeries(new WaterfallChartSeries());

・setDomain(new WaterfallChartDomain())
で、ウォーターフォール チャートのドメイン データ (横軸)を設定します。

サンプル コード

WaterfallChartDomain domain = new WaterfallChartDomain();

//グラフデータ
domain.setData(new ChartData());

//縦ラベルの順序を逆にする
domain.setReversed(true);

・setSeries(new WaterfallChartSeries())
で、ウォーターフォール チャートが視覚化しているデータを設定します。

サンプル コード

List<WaterfallChartSeries> series = new ArrayList<>();

WaterfallChartSeries fall = new WaterfallChartSeries();

//このシリーズに登場するカスタム小計列
fall.setCustomSubtotals(new ArrayList<WaterfallChartCustomSubtotal>());

//このシリーズで視覚化されるデータ
fall.setData(new ChartData());

//シリーズの最後から小計列を非表示にするか?
fall.setHideTrailingSubtotal(true);

//負の値を含むこの系列のすべての列のスタイル
fall.setNegativeColumnsStyle(new WaterfallChartColumnStyle());

//このシリーズのすべての列の正の値のスタイル
fall.setPositiveColumnsStyle(new WaterfallChartColumnStyle());

//このシリーズのすべての小計列のスタイル
fall.setSubtotalColumnsStyle(new WaterfallChartColumnStyle());

series.add(fall);

・setCustomSubtotals(new ArrayList())
で、シリーズに登場するカスタム小計列を設定します。

サンプル コード

List<WaterfallChartCustomSubtotal> total = new ArrayList<>();

WaterfallChartCustomSubtotal t = new WaterfallChartCustomSubtotal();

//シリーズ内のデータ インデックス(0スタート)
t.setSubtotalIndex(0);

//setSubtotalIndexが小計か?
t.setDataIsSubtotal(true);

//小計列のラベル
t.setLabel("");

total.add(t);

・setNegativeColumnsStyle(new WaterfallChartColumnStyle())
で、負の値を含むこの系列のすべての列のスタイルを設定、
・setPositiveColumnsStyle(new WaterfallChartColumnStyle())
で、このシリーズのすべての列の正の値のスタイルを設定、
・setSubtotalColumnsStyle(new WaterfallChartColumnStyle())
で、このシリーズのすべての小計列のスタイルを設定します。

サンプル コード

WaterfallChartColumnStyle nStyle = new WaterfallChartColumnStyle();

//列の色
nStyle.setColor(new Color());    //または getColorStyle

//列の凡例のラベル
nStyle.setLabel("");

2. グラフを更新

グラフを更新します。

グラフの更新時に下記を指定します。
・更新するグラフのID
・更新するグラフの仕様

更新するグラフの仕様は、「1. グラフを追加」と同じChartSpecクラスを使います。
内容はそちらをご覧ください。

サンプル コード

public Request updateChartSpec(Integer sheetId) {
    Request request = new Request();

    UpdateChartSpecRequest r = new UpdateChartSpecRequest();
    r.setChartId(1);			//更新するチャートのID
    r.setSpec(getChartSpec());	//更新するチャートの仕様

    request.setUpdateChartSpec(r);
    return request;
}

3. グラフを削除

グラフを削除します。

サンプル コード

public Request deleteEmbeddedObject() {
    Request request = new Request();

    DeleteEmbeddedObjectRequest r = new DeleteEmbeddedObjectRequest();
    r.setObjectId(1);			//削除するオブジェクトのID。

    request.setDeleteEmbeddedObject(r);
    return request;
}

おしまい。。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?