2017-03-08 71 views
4

我的數據集可能包含數據中的大量空白,並且我想繪製數據而無需用空白區域自動填充空白。我該如何隱藏數據空白?

例圖表從我的應用程序:

enter image description here

數據:

+------------+-----------+------------+ 
| 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 | 
+------------+-----------+------------+ 

替代實施例的jsfiddle:https://jsfiddle.net/4h922ca9/

Plotly Graph Maker示例https://plot.ly/create/?fid=douglas.gaskell:3

我該如何做到這一點?

編輯:爲了澄清,我不是想用線條或條來填補空白。我不希望這個差距存在。

回答

0

在你的配置中使用它。

connectgaps: true 

我其實通過查看這個庫的python版本來試試這個。

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>


編輯

我想接近這個它來治療x軸像一個類別軸的最佳途徑。

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.com/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>

+1

連接的縫隙,它沒有隱藏的差距。我有意不使用這個來避免跨越這條空白線。我不希望這個差距存在。這是在你的代碼片段的空值的評論中明確提到的。 –

+0

@DouglasGaskell你應該小心這一點..你將在這種情況下修改系列..從我的EXP與Plotly,這並不好玩.. – Pogrindis

+0

@Pogrindis你可以擴大嗎?我試圖複製我可以在網頁應用程序中使用Excel或Google表格獲得的繪圖行爲的類型,它不會自動填充空白空間中的數據間隙。如果有一種方法可以阻止我填充它,我全都是耳朵。 –