javascript - 将条形图最后一列设置为默认蓝色。注意“通过 API 调用数据”
问题描述
'我的问题是将图表的最后一列更改为蓝色。我想做的是将18Dec Bar更改为blue color。提前致谢'
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
type: 'GET',
url: "{{ url('/dateusersbarchartdata') }}/" + period,
dataType: "json",
global: false,
async: false,
success: function (jsondata) {
}
}).responseText;
var array = $.parseJSON(jsonData);
var data = google.visualization.arrayToDataTable(array);
var chart = new google.visualization.BarChart(document.getElementById('container-
user'));
var colors = ['#B0C4DE', '#1E90FF'];
var options = {
orientation: 'horizontal',
backgroundColor: {fill: 'transparent'},
chartArea: {'width': '100%', 'height': '80%'},
series: {0: {color: '#B0C4DE'}},
};
chart.draw(data, options, {colors: colors});
}
解决方案
您可以使用'style'
列角色。
这将允许您更改各个条的颜色。
在数据表中,为列标题添加一个对象。
['x', 'y0', {role: 'style', type: 'string'}], // <-- column role
然后在数据行中,为条形添加颜色。
['18Sep', 600, '#B0C4DE'],
['18Dec', 1500, '#1E90FF'] // <-- last bar
请参阅以下工作片段...
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var data = google.visualization.arrayToDataTable([
['x', 'y0', {role: 'style', type: 'string'}],
['17Jun', 1000, '#B0C4DE'],
['17Sep', 500, '#B0C4DE'],
['17Dec', 1000, '#B0C4DE'],
['18Mar', 750, '#B0C4DE'],
['18Jun', 1200, '#B0C4DE'],
['18Sep', 600, '#B0C4DE'],
['18Dec', 1500, '#1E90FF']
]);
var chart = new google.visualization.BarChart(document.getElementById('container-user'));
var options = {
orientation: 'horizontal',
backgroundColor: {fill: 'transparent'},
chartArea: {'width': '100%', 'height': '80%'}
};
chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="container-user"></div>
注意:颜色和系列选项映射到数据表中的每个 y 轴列。
因此,如果您只有一个 y 轴列,如上例所示,
那么您只有一系列数据。
这就是您必须使用'style'
列角色的原因。
编辑
加载数据后, 您可以使用数据视图设置样式列的值。
这可以通过添加一个计算列来完成,该列
返回最后一行/条的颜色。
var view = new google.visualization.DataView(data);
view.setColumns([0, 1, {
calc: function (dt, row) {
// return color for last row
if (row === (dt.getNumberOfRows() - 1)) {
return '#1E90FF';
}
return null;
},
role: 'style',
type: 'string'
}]);
然后使用视图绘制图表,
请参阅以下工作片段...
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var data = google.visualization.arrayToDataTable([
['x', 'y0'],
['17Jun', 1000],
['17Sep', 500],
['17Dec', 1000],
['18Mar', 750],
['18Jun', 1200],
['18Sep', 600,],
['18Dec', 1500,]
]);
var view = new google.visualization.DataView(data);
view.setColumns([0, 1, {
calc: function (dt, row) {
// return color for last row
if (row === (dt.getNumberOfRows() - 1)) {
return '#1E90FF';
}
return null;
},
role: 'style',
type: 'string'
}]);
var chart = new google.visualization.BarChart(document.getElementById('container-user'));
var options = {
colors: ['#B0C4DE'],
orientation: 'horizontal',
backgroundColor: {fill: 'transparent'},
chartArea: {'width': '100%', 'height': '80%'}
};
chart.draw(view, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="container-user"></div>
推荐阅读
- python - 如何使用单个连接使用 MySQL 锁定?或者每次使用锁时都使用新连接的任何替代方法?
- oracle - 在 oracle 中转换存储为数字(32,0)的日期
- ios - 无法在 Katalon 工作室的 iOS 模拟器上启动应用程序
- excel - 使用VBA将数据从一张纸拉到另一张纸的最快方法是什么
- algorithm - Haskell 类型错误`map (\idx -> (2.400 ** idx) / fact idx) [0..9]``fact :: Int -> Int`,预期的 Int,实际的 Double
- java - 查询适用于 PreparedStatement,但不适用于 NamedParameterJdbcTemplate
- c# - WPF - 超类的实例子类
- ios - UITabBar 项目标题位置问题
- amazon-web-services - cloudfront - lambda 函数 - 使用 KMS 的 s3 加密
- azure - Azure WebJob 未从 QueueTrigger 触发