admin管理员组文章数量:1289891
I have datasets that may include large gaps in data, and I want to chart the data without plotly automatically filling in the gaps with blank space.
Example Chart from my app:
Data:
+------------+-----------+------------+
| date | responses | percentage |
+------------+-----------+------------+
| 2017-02-13 | 4 | 0.6296 |
| 2017-02-14 | 1 | 0.7963 |
| 2017-02-15 | 4 | 0.7315 |
| 2017-02-16 | 2 | 0.4213 |
| 2017-03-02 | 1 | 0.8611 |
| 2017-03-03 | 1 | 0.8148 |
| 2017-03-04 | 2 | 0.4444 |
+------------+-----------+------------+
Alternate Example JSFiddle: /
Plotly Graph Maker Example: /?fid=douglas.gaskell:3
How can I achieve this?
Edit: To clarify, I am not trying to fill in the gap with a line or bar. I don't want the gap to exist at all.
I have datasets that may include large gaps in data, and I want to chart the data without plotly automatically filling in the gaps with blank space.
Example Chart from my app:
Data:
+------------+-----------+------------+
| date | responses | percentage |
+------------+-----------+------------+
| 2017-02-13 | 4 | 0.6296 |
| 2017-02-14 | 1 | 0.7963 |
| 2017-02-15 | 4 | 0.7315 |
| 2017-02-16 | 2 | 0.4213 |
| 2017-03-02 | 1 | 0.8611 |
| 2017-03-03 | 1 | 0.8148 |
| 2017-03-04 | 2 | 0.4444 |
+------------+-----------+------------+
Alternate Example JSFiddle: https://jsfiddle/4h922ca9/
Plotly Graph Maker Example: https://plot.ly/create/?fid=douglas.gaskell:3
How can I achieve this?
Edit: To clarify, I am not trying to fill in the gap with a line or bar. I don't want the gap to exist at all.
Share Improve this question edited Mar 8, 2017 at 18:21 Douglas Gaskell asked Mar 8, 2017 at 17:47 Douglas GaskellDouglas Gaskell 10.1k12 gold badges80 silver badges135 bronze badges2 Answers
Reset to default 5Use this in your config.
connectgaps: true
I actually tried this out by viewing the python version of this library.
Plotly :: Python Docs :: Line Charts :: Connect Data Gaps
var rawData = [
{date: new Date(2017, 01, 10), value: 5},
{date: new Date(2017, 01, 11), value: 6},
{date: new Date(2017, 01, 12), value: 8},
{date: new Date(2017, 01, 13), value: 13},
{date: new Date(2017, 01, 14), value: null}, //Null to avoid plotting the line over the gap
{date: new Date(2017, 01, 20), value: 12},
{date: new Date(2017, 01, 21), value: 14},
{date: new Date(2017, 01, 22), value: 8},
{date: new Date(2017, 01, 23), value: 9},
{date: new Date(2017, 01, 24), value: 11},
{date: new Date(2017, 01, 25), value: 8},
{date: new Date(2017, 01, 26), value: 6},
{date: new Date(2017, 01, 27), value: 7}
];
let trace1 = {
name: 'values',
type: 'scatter',
mode: 'lines+markers',
x: getData(rawData, 'date'),
y: getData(rawData, 'value'),
connectgaps: true // <-- HERE
}
Plotly.newPlot('myChart', [trace1]);
function getData(input, propName) {
let output = [];
for (let i = 0; i < input.length; i++) {
output.push(input[i][propName]);
}
return output;
}
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<div id="myChart"></div>
Edit
I guess the best way to approach this it to treat the x-axis like a category axis.
var rawData = [
{ date: '2017-02-10', value: 5 },
{ date: '2017-02-11', value: 6 },
{ date: '2017-02-12', value: 8 },
{ date: '2017-02-13', value: 13 },
{ date: '2017-02-20', value: 12 },
{ date: '2017-02-21', value: 14 },
{ date: '2017-02-22', value: 8 },
{ date: '2017-02-23', value: 9 },
{ date: '2017-02-24', value: 11 },
{ date: '2017-02-25', value: 8 },
{ date: '2017-02-26', value: 6 },
{ date: '2017-02-27', value: 7 }
];
let trace1 = {
name: 'values',
type: 'scatter',
mode: 'lines+markers',
x: getData(rawData, 'date').map((d, i) => i),
y: getData(rawData, 'value'),
}
let layout = {
xaxis: {
title: 'Date',
tickvals: getData(rawData, 'date').map((d, i) => i).filter(filterEven),
ticktext: getData(rawData, 'date').map(d => moment(d).format('MMM DD')).filter(filterEven)
}
}
Plotly.newPlot('myChart', [trace1], layout);
function filterEven(v, i) { return i % 2 === 0; }
function getData(input, prop) { return input.map(v => v[prop]); }
<script src="https://cdnjs.cloudflare./ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<div id="myChart"></div>
Just in case anyone is using python, it's connectgaps=True.
import plotly.graph_objects as go
# instantiate figure
fig = go.Figure()
# plot to figure
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
y=[10, 20, None, 15, 10, 5, 15, None, 20, 10, 10, 15, 25, 20, 10],
name = '<b>No</b> Gaps', # Style name/legend entry with html tags
connectgaps=True # override default to connect the gaps
))
fig.show()
Source: https://plot.ly/python/line-charts/#connect-data-gaps
本文标签: javascriptHow can I hide data gaps in plotlyStack Overflow
版权声明:本文标题:javascript - How can I hide data gaps in plotly? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741486472a2381428.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论