var publicSpreadsheetUrl = 'https://docs.google.com/spreadsheets/d/1BFPjROVypCGNeLxhk5_PW6PoOb4FDzJsL3DEOEdW_Rc/edit?usp=sharing';
function init() {
Tabletop.init({
key: publicSpreadsheetUrl,
callback: showInfo,
simpleSheet: true
})
}
function showInfo(data, tabletop) {
if (!data || !data.length) {
throw new Error('Unable to get any data from the spreadsheet');
}
// First we wanna parse some values
var parsed = data.map(val => {
return {month: val.x, year: parseInt(val.y), z: parseFloat(val.z)};
});
// I'm going to hardcode the months here as we wanna keep the order.
// You minght consider using something like moment.js to get month names.
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var minYear = _.minBy(parsed, p => p.year);
var maxYear = _.maxBy(parsed, p => p.year);
// Create the range of years. This is going to be our Y axis.
var years = _.range(minYear.year, maxYear.year);
// No wa are going to iterrate over months and years, searching for values.
// By doing this we're going to end up with the data format accepted by plotly.
// https://plot.ly/javascript/heatmaps/#heatmap-with-categorical-axis-labels
var zValues = _.map(months, m => {
return _.map(years, y => {
var matchingElement = _.find(parsed, p => p.year === y && p.month === m);
if (matchingElement) {
return matchingElement.z;
}
// If we haven't found the value fill it with null.
return null;
})
})
var chartData = [{
z: zValues, x: months, y: years,
type: 'heatmap'
}];
Plotly.newPlot('myDiv', chartData);
}
window.addEventListener('DOMContentLoaded', init)
<div id="myDiv"></div>
<script src='https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js'></script>
<!-- Latest compiled and minified plotly.js JavaScript -->
<script type="text/javascript" src="https://cdn.plot.ly/plotly-latest.min.js"></script>
あなたの軸は何ですか?年と月?あなたの値はコラム「PE比率」から取られていますか? –
@MaximilianPeters x軸は月、y軸は年を表します。 pe値はz値です。 – Ted
ごめんなさい@AntonioNarkevich。私は他の組み合わせを使って私の側から試していた。とにかく私はそのシートを凍らせます。 – Ted