I have created a piechart and an areachart, both representing the number of tickets sold per type, with the piechart focusing on the total number of tickets sold and the areachart the timeline they were sold. I now want to make sure the color assigned to each ticket type is replicated across both charts. Initially I thought of simply sorting the data based on number of tickets sold and assigning colors based on order, but the data structure for the areachart and the piechart is slightly different and the areachart only includes total tickets sold per day vs all time. My plan was to assign colors based on the number of total tickets sold in the piechart and the mimic that in the timeline by assigning colors based on matching ticket type names. I tried doing this by adding an extra column to the chart with the 'style' property, storing the color data there but it doesn't seem to work. Any advice? This is my code sofar: <script type="text/javascript"> google.charts.load('current', {packages:['corechart']}); google.charts.setOnLoadCallback(drawChart);
<?php $colorMapping = [ 'another\x20type' => 'red', 'xxx' => 'green', 'General Admission'=> 'blue', 'group test - General Admission'=> 'black', 'another type (inc. test)'=> 'purple', 'free' => 'green' ]; ?> function getTimelineData() { let data = new google.visualization.DataTable(); data.addColumn('string', 'Date'); <?php foreach($this->ticketTypes as $ticketType) { ?> data.addColumn('number', "<?php $this->echoEscapeJs($ticketType); ?>"); <?php } ?> data.addColumn({type: 'string', role: 'style'}) <?php foreach($this->timeline as $day => $value) { ?> data.addRow(["<?php $this->echoEscapeJs($day); ?>", <?php $this-> echoEscapeJs(implode(',', $value)); ?> , '<?php $this->echoEscapeHtml('test') ?>'; ]); <?php } ?> return data; } function getPieChartData($colorMapping) { let data = new google.visualization.DataTable(); data.addColumn('string', 'Ticket type'); data.addColumn('number', 'Quantity'); data.addColumn({type: 'string', role: 'style'}) <?php foreach($this->table['ticket_type_lines'] as $ticketType) { ?> data.addRow(["<?php $this->echoEscapeJs($ticketType['ticket_type_name']); ?> ", <?php $this->echoEscapeJs($ticketType['quantity']); ?>, '<?php isset( $colorMapping[$ticketType['ticket_type_name']]) ? $this->echoEscapeJs( array_keys($colorMapping, $ticketType['ticket_type_name'])) : "red"?>' ]); <?php } ?> return data; } function drawChart() { new google.visualization.AreaChart(document.getElementById('timeline_div')) .draw(getTimelineData(), { curveType: "function", height: 400, colors: 'style', vAxis: { title: 'Tickets issued' }, hAxis: { slantedText: true } }); new google.visualization.PieChart(document.getElementById('pieChart_div')) .draw(getPieChartData(), { chartArea: { width: '100%', height: 400, }, legend: { position: 'labeled' }, fontSize: 14, sliceVisibilityThreshold: 0.05, pieSliceText: 'none', colors: 'style', }); var pieChartData = getPieChartData(); console.log(pieChartData) } setTimeout(drawChart, 200); //create trigger to resizeEnd event $(window).resize(function() { if(this.resizeTO) clearTimeout(this.resizeTO); this.resizeTO = setTimeout(function() { drawChart(); }, 500); }); </script> -- You received this message because you are subscribed to the Google Groups "Google Visualization API" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-visualization-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/google-visualization-api/da76174d-2e3b-4d58-9d5f-3c01da143fefn%40googlegroups.com.