绘图颜色不变 Javascript
Plotly color not changing Javascript
我从事的项目需要我使用图形 csv 文件输入。我一直在使用 plotly,到目前为止它似乎工作得很好。
但是,当我尝试更改图表(线条和标记)的颜色时,它不起作用。我发布了我的代码摘录,因为颜色总体上只是代码的一小部分,我不想在这里转储所有内容。
//There's multiple charts so changing color is important
var r = Math.random() * 256
var g = Math.random() * 256
var b = Math.random() * 256
...
//used these as a vars so I can change things to test easily (multiple time series being used)
var color='rgb('+r+', '+g+', '+b+')'
var colora='rgba('+r+', '+g+', '+b+', '+'0.14'+')'
...
//layout of markers
{
x: time,
y: time,
z: data1,
line: {
reversescale: false,
//color: "'"+color+"'"
color: "'rgb("+r+', ' +g+', '+ b+")'",
},
//mode: 'lines',
marker: {
//color: "'"+color+"'",
color: "'rgb("+r+', ' +g+', '+ b+")'",
size: 3,
line: {
//color: "'"+colora+"'",
color: "'rgb("+r+', ' +g+', '+ b+")'",
width: 0.1
},
opacity: 0.8
},
type: 'scatter3d'
}
这两种尝试都给我标准的黑点。当我尝试运行良好的常量时(类似于颜色:'rgb(100,100,240)')。我在这里缺少什么吗?我有 console.logged 这个东西,它似乎不是我的 vars 结构的问题。
您的 rgb 字符串周围的引号过多。为了避免在连接字符串时出现混淆,您还可以使用模板字符串。
请参阅下面的工作 fiddle。
const r = 0;
const g = 255;
const b = 0;
const color = 'rgb(' + r + ',' + g + ',' + b + ')';
const colorTemplate = `rgb(${r},${g},${b})`;
var trace1 = {
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter',
marker: {
color: color
}
};
var trace2 = {
x: [1, 2, 3, 4],
y: [16, 5, 11, 9],
type: 'scatter',
marker: {
color: colorTemplate
}
};
var data = [trace1, trace2];
Plotly.newPlot('myDiv', data);
<head>
<!-- Load plotly.js into the DOM -->
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
</head>
<body>
<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>
</body>
我的代码的问题是我使用的是变量。通过切换到 consts,我可以解决这个问题。我没有注意到颜色没有改变,因为出于某种原因,图例显示了正确的颜色,但标记和线条不接受它。
我从事的项目需要我使用图形 csv 文件输入。我一直在使用 plotly,到目前为止它似乎工作得很好。
但是,当我尝试更改图表(线条和标记)的颜色时,它不起作用。我发布了我的代码摘录,因为颜色总体上只是代码的一小部分,我不想在这里转储所有内容。
//There's multiple charts so changing color is important
var r = Math.random() * 256
var g = Math.random() * 256
var b = Math.random() * 256
...
//used these as a vars so I can change things to test easily (multiple time series being used)
var color='rgb('+r+', '+g+', '+b+')'
var colora='rgba('+r+', '+g+', '+b+', '+'0.14'+')'
...
//layout of markers
{
x: time,
y: time,
z: data1,
line: {
reversescale: false,
//color: "'"+color+"'"
color: "'rgb("+r+', ' +g+', '+ b+")'",
},
//mode: 'lines',
marker: {
//color: "'"+color+"'",
color: "'rgb("+r+', ' +g+', '+ b+")'",
size: 3,
line: {
//color: "'"+colora+"'",
color: "'rgb("+r+', ' +g+', '+ b+")'",
width: 0.1
},
opacity: 0.8
},
type: 'scatter3d'
}
这两种尝试都给我标准的黑点。当我尝试运行良好的常量时(类似于颜色:'rgb(100,100,240)')。我在这里缺少什么吗?我有 console.logged 这个东西,它似乎不是我的 vars 结构的问题。
您的 rgb 字符串周围的引号过多。为了避免在连接字符串时出现混淆,您还可以使用模板字符串。 请参阅下面的工作 fiddle。
const r = 0;
const g = 255;
const b = 0;
const color = 'rgb(' + r + ',' + g + ',' + b + ')';
const colorTemplate = `rgb(${r},${g},${b})`;
var trace1 = {
x: [1, 2, 3, 4],
y: [10, 15, 13, 17],
type: 'scatter',
marker: {
color: color
}
};
var trace2 = {
x: [1, 2, 3, 4],
y: [16, 5, 11, 9],
type: 'scatter',
marker: {
color: colorTemplate
}
};
var data = [trace1, trace2];
Plotly.newPlot('myDiv', data);
<head>
<!-- Load plotly.js into the DOM -->
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
</head>
<body>
<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>
</body>
我的代码的问题是我使用的是变量。通过切换到 consts,我可以解决这个问题。我没有注意到颜色没有改变,因为出于某种原因,图例显示了正确的颜色,但标记和线条不接受它。