Plotly.js
Plotly.js 是一個包含多種圖表型別的圖表庫。
- 水平和垂直條形圖
- 餅圖和圓環圖
- 折線圖
- 散點圖和氣泡圖
- 方程式圖
- 3D 圖表
- 統計圖
- SVG 地圖
- 等等...
Plotly.js 是免費開源的,在 MIT 許可下發布。安裝和使用均免費。您可以透過 Github 檢視原始碼,報告問題並貢獻程式碼。
柱狀圖
原始碼
const xArray = ["義大利","法國","西班牙","美國","阿根廷"];
const yArray = [55, 49, 44, 24, 15];
const data = [{
x: xArray,
y: yArray,
type: "bar",
orientation:"v",
marker: {color:"rgba(0,0,255)"}
}];
const layout = {title:"全球葡萄酒產量"};
Plotly.newPlot("myPlot", data, layout);
水平條形圖
原始碼
const xArray = [55, 49, 44, 24, 15];
const yArray = ["義大利","法國","西班牙","美國","阿根廷"];
const data = [{
x: xArray,
y: yArray,
type: "bar",
orientation: "h",
marker: {color:"rgba(255,0,0,0.6)"}
}];
const layout = {title:"全球葡萄酒產量"};
Plotly.newPlot("myPlot", data, layout);
餅圖
要顯示餅圖而不是條形圖,請將 x 和 y 更改為標籤和值,並將 type 改為 "pie"
const data = [{
labels: xArray,
values: yArray,
type: "pie"
}];
甜甜圈圖
要顯示甜甜圈圖而不是餅圖,請新增一個孔
const data = [{
labels: xArray,
values: yArray,
hole: .4,
type: "pie"
}];
繪製方程
原始碼
let exp = "Math.sin(x)";
// 生成值
const xValues = [];
const yValues = [];
for (let x = 0; x <= 10; x += 0.1) {
xValues.push(x);
yValues.push(eval(exp));
}
// 使用 Plotly 顯示
const data = [{x:xValues, y:yValues, mode:"lines"}];
const layout = {title: "y = " + exp};
Plotly.newPlot("myPlot", data, layout);
自己動手試一試 »
要顯示散點圖,請將模式更改為 markers
// 使用 Plotly 顯示
const data = [{x:xValues, y:yValues, mode:"markers"}];
const layout = {title: "y = " + exp};
Plotly.newPlot("myPlot", data, layout);
自己動手試一試 »
散點圖
原始碼
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// 定義資料
const data = [{
x: xArray,
y: yArray,
mode:"markers",
type:"scatter"
}];
// 定義佈局
const layout = {
xaxis: {range: [40, 160], title: "平方米"},
yaxis: {range: [5, 16], title: "百萬美元"},
title: "房價與面積"
};
Plotly.newPlot("myPlot", data, layout);
折線圖
原始碼
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// 定義資料
const data = [{
x: xArray,
y: yArray,
mode: "lines",
type: "scatter"
}];
// 定義佈局
const layout = {
xaxis: {range: [40, 160], title: "平方米"},
yaxis: {range: [5, 16], title: "百萬美元"},
title: "房價與面積"
};
// 使用 Plotly 顯示
Plotly.newPlot("myPlot", data, layout);
氣泡圖
氣泡圖是標記具有可變顏色、大小和符號的散點圖。
它是一種三維圖表,只有兩個軸(x 和 y),其中氣泡的大小表示第三個維度。
原始碼
const xArray = [1,2,3,4];
const yArray = [10,20,30,40];
const trace1 = {
x: xArray,
y: yArray,
mode: 'markers',
marker: {
color: ['red', 'green', 'blue', 'orange'],
size: [20, 30, 40, 50]
}
};
const data = [trace1];
const layout = {
title: "繪製氣泡"
};
Plotly.newPlot('myPlot', data, layout);
線性圖
原始碼
let exp = "x + 17";
// 生成值
const xValues = [];
const yValues = [];
for (let x = 0; x <= 10; x += 1) {
yValues.push(eval(exp));
xValues.push(x);
}
// 定義資料
const data = [{
x: xValues,
y: yValues,
mode: "lines"
}];
// 定義佈局
const layout = {title: "y = " + exp};
// 使用 Plotly 顯示
Plotly.newPlot("myPlot", data, layout);
多行
原始碼
let exp1 = "x";
let exp2 = "1.5*x";
let exp3 = "1.5*x + 7";
// 生成值
const x1Values = [];
const x2Values = [];
const x3Values = [];
const y1Values = [];
const y2Values = [];
const y3Values = [];
for (let x = 0; x <= 10; x += 1) {
x1Values.push(x);
x2Values.push(x);
x3Values.push(x);
y1Values.push(eval(exp1));
y2Values.push(eval(exp2));
y3Values.push(eval(exp3));
}
// 定義資料
const data = [
{x: x1Values, y: y1Values, mode:"lines"},
{x: x2Values, y: y2Values, mode:"lines"},
{x: x3Values, y: y3Values, mode:"lines"}
];
// 定義佈局
const layout = {title: "[y=" + exp1 + "] [y=" + exp2 + "] [y=" + exp3 + "]"};
// 使用 Plotly 顯示
Plotly.newPlot("myPlot", data, layout);