【PptxGenJS】基础图表的使用教程(柱状图)

362 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

柱状图

语法

想要生成柱状图,需要使用下面的语法:

s.addChart(ppt.ChartType.bar, BarData,BarOptions);

比如说下面的代码会生成一个最最最基础的柱状图:

const BarData = [
    {
        name: "每月数据",
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        values: Array(12).fill(1).map(i => Math.floor(Math.random() * 10000 + 100)),
    },
];

s.addChart(ppt.ChartType.bar, BarData, { x: 1, y: 1, w: 8, h: 4 });

image.png

配置属性

barDir - 横向柱状图/垂直柱状图

柱状图根据柱条的方向可以分为横向的和垂直的,通过 barDir 属性来控制,它有两个属性值 [col,bar] ,默认值是 col 表示为垂直柱状图。

比如说我们将上面的柱状图改为横向的:

s.addChart(ppt.ChartType.bar, BarData, {
    ...xywh(4, 2, 20, 15),
    barDir: 'bar', // 横向柱状图
});

效果如下:

image.png

barGapWidthPct - 柱条间隔宽度

该属性控制柱条之间的宽度,取值0~500,单位是百分比,默认值为150,该值越大,柱条越细(因为柱条的间隔宽度大,柱条被挤得细)。

下图分别是该属性为0和500时的样子

s.addChart(ppt.ChartType.bar, BarData, {
    ...xywh(4, 2, 20, 15),
    barGapWidthPct: 0 // 500
});

image.png

barGrouping - 柱状图类型

这个属性有3个值 [clustered,stacked,percentStacked],控制着柱状图柱子的分布方式,clustered 表示集群分布,就是平时看到的柱状图,一根一根的,stacked 表示堆叠分布,就是我们常说的堆叠柱状图,percentStacked 百分比堆叠柱状图(这个看图更清楚)。

使用堆叠柱状图的一个注意点就是,参数 BarData 必须有两个及以上的元素,因此我们给 BarData 再添加两个元素:

const BarData = [
    {
        name: "香蕉销量",
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        values: Array(12).fill(1).map(i => Math.floor(Math.random() * 10000 + 100)),
    },
    {
        name: "苹果销量",
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        values: Array(12).fill(1).map(i => Math.floor(Math.random() * 10000 + 100)),
    },
    {
        name: "西瓜销量",
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        values: Array(12).fill(1).map(i => Math.floor(Math.random() * 10000 + 100)),
    }
];

s.addChart(ppt.ChartType.bar, BarData, {
    ...xywh(4, 2, 20, 15),
    barGrouping: 'stacked' // 堆叠柱状图
});

然后看看,生成的堆叠柱状图的效果如下:

image.png

然后看看百分比堆叠柱状图的效果:

image.png

可以看出,堆叠柱状图和百分比堆叠柱状图最大区别就是它们的y轴,一个是数值,一个是百分比。

多个系列的集群柱状图效果如下:

image.png

barOverlapPct - 柱条重叠

该属性是个百分比,取值范围在-100到100之间,表示柱条之间的重叠宽度,比如说将该属性设为50,则柱条会有一半的宽度遮挡住其他柱条。 (默认情况下,同一系列的柱条之间是没有间隔的,即该属性的值为0)

s.addChart(ppt.ChartType.bar, BarData, {
    ...xywh(4, 2, 20, 15),
    barOverlapPct:50
});

image.png

该属性为正值的时候,会让柱条重叠在一起,该属性为负值的时候则会拉开柱条间的距离。

s.addChart(ppt.ChartType.bar, BarData, {
    ...xywh(4, 2, 20, 15),
    barOverlapPct:-50
});

image.png