gpt4 book ai didi

javascript - 如何根据用户需要更改图表线条或区域颜色?

转载 作者:行者123 更新时间:2023-11-30 11:17:40 26 4
gpt4 key购买 nike

如果用户不喜欢我们在呈现图表时从 Flask 后端提供的颜色;他/她应该能够点击线条/区域,编辑器点击编辑按钮并编辑颜色)这是关于用户从 UI 进行编辑。因此,在进行编辑时,他们应该获得可供选择的调色板。

这是我的 Flask 路线

@app.route('/bar_charts')
def bar_charts():
labels = ["January", "February", "March", "April", "May", "June", "July", "August"]
values = [10, 9, 8, 7, 6, 4, 7, 8]

return render_template("barchart.html", labels=labels, values=values)

这是我的 chart.js 代码

{% extends 'base.html' %}
{% block content %}
<h1>Bar Charts</h1>
<canvas id="chart" width="600" height="400"></canvas>
<input type="color" id="clr" onchange="UpdateColor(event)" value="#66FFEE" >

<script type="text/javascript" src="{{ url_for('static', filename='js/Chart.min.js') }}"></script>
<script type="text/javascript">

var randomColorGenerator = function () {
return '#' + (Math.random().toString(16) + '0000000').slice(2, 8);
};



// bar chart data
var barData = {
labels : [{% for item in labels %}
"{{item}}",
{% endfor %}],
datasets : [
{
fillColor: '#FFEEAA',
strokeColor: randomColorGenerator(),
pointColor: randomColorGenerator(),
data : [{% for item in values %}
{{item}},
{% endfor %}]
}
]
}

// get bar chart canvas
var mychart = document.getElementById("chart").getContext("2d");

steps = 10
max = 10
// draw bar chart
var Chart = new Chart(mychart).Bar(barData, {
scaleOverride: true,
scaleSteps: steps,
scaleStepWidth: Math.ceil(max / steps),
scaleStartValue: 0,
scaleShowVerticalLines: true,
scaleShowGridLines : true,
barShowStroke : true,
scaleShowLabels: true
});
function UpdateColor(event) {
console.log( typeof event.target.value);
event.preventDefault();

var color = event.target.value;
Chart.datasets.forEach(function(dataset){
dataset.fillColor = color;

});

Chart.update()
}

</script>
{% endblock %}

现在的输出是这样的 enter image description here

在颜色变化中变化的值来了。但是图表的条形颜色没有改变。有人可以帮我解决这个问题

最佳答案

我已经在 javascript 中找到了完成此任务的代码

{% extends 'base.html' %}
{% block content %}
<title>JS Bin</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js"></script>
</head>
<body>
<canvas id="myChart" width="400" height="400"></canvas>
<input type="color" id ="colorPicker"/>
</body>
<script>
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: [{% for item in labels %}
"{{item}}",
{% endfor %}],
datasets: [{
label: '# of Votes',
data: [{% for item in values %}
{{item}},
{% endfor %}],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});

var colorPicker = document.getElementById("colorPicker");
colorPicker.addEventListener("change", updateChart, false);

function updateChart(e) {
e.preventDefault();

myChart.data.datasets[0].backgroundColor[0] = e.target.value;
myChart.data.datasets[0].backgroundColor[1] = e.target.value;
myChart.data.datasets[0].backgroundColor[2] = e.target.value;
myChart.data.datasets[0].backgroundColor[3] = e.target.value;
myChart.data.datasets[0].backgroundColor[4] = e.target.value;
myChart.data.datasets[0].backgroundColor[5] = e.target.value;
myChart.data.datasets[0].backgroundColor[6] = e.target.value;
myChart.data.datasets[0].backgroundColor[7] = e.target.value;
myChart.update();
}

</script>
{% endblock %}

关于javascript - 如何根据用户需要更改图表线条或区域颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50960208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com