Treatments Plot

From Glioblastoma Treatments
Revision as of 17:00, 29 May 2024 by Lazy (talk | contribs) (Created page with "== Glioblastoma Treatments == <div id="categories"></div> <div id="plot"></div> <script src="https://cdn.plot.ly/plotly-latest.min.js"></script> <script> // Fetch the JSON data from the query result fetch('/index.php?title=Special:Ask&format=json&q=Category:Treatments|%3FHas+treatment+name=Treatment|%3FHas+Effectiveness=Effectiveness|%3FHas+Toxicity=Toxicity|%3FHas+Category=Category|format=json|link=none|headers=hide|mainlabel=-') .then(response => resp...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Glioblastoma Treatments

<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> <script>

   // Fetch the JSON data from the query result
   fetch('/index.php?title=Special:Ask&format=json&q=|%3FHas+treatment+name=Treatment|%3FHas+Effectiveness=Effectiveness|%3FHas+Toxicity=Toxicity|%3FHas+Category=Category|format=json|link=none|headers=hide|mainlabel=-')
   .then(response => response.json())
   .then(data => {
       const treatments = data.results.map(item => ({
           treatment: item.printouts['Treatment'][0],
           effectiveness: parseInt(item.printouts['Effectiveness'][0]),
           toxicity: parseInt(item.printouts['Toxicity'][0]),
           category: item.printouts['Category'][0]
       }));
       const categories = [...new Set(treatments.map(t => t.category))];
       // Create checkboxes for categories
       const categoriesDiv = document.getElementById('categories');
       categories.forEach(category => {
           const label = document.createElement('label');
           const checkbox = document.createElement('input');
           checkbox.type = 'checkbox';
           checkbox.value = category;
           checkbox.checked = true;
           checkbox.addEventListener('change', updatePlot);
           label.appendChild(checkbox);
           label.appendChild(document.createTextNode(category));
           categoriesDiv.appendChild(label);
       });
       // Initial plot
       updatePlot();
       function updatePlot() {
           const selectedCategories = Array.from(document.querySelectorAll('#categories input[type="checkbox"]:checked')).map(cb => cb.value);
           const filteredTreatments = treatments.filter(t => selectedCategories.includes(t.category));
           const trace = {
               x: filteredTreatments.map(t => t.effectiveness),
               y: filteredTreatments.map(t => t.toxicity),
               mode: 'markers',
               type: 'scatter',
               text: filteredTreatments.map(t => t.treatment),
               marker: { color: filteredTreatments.map(t => categories.indexOf(t.category)) }
           };
           const layout = {
               title: 'Glioblastoma Treatments',
               xaxis: { title: 'Effectiveness' },
               yaxis: { title: 'Toxicity', autorange: 'reversed' }
           };
           Plotly.newPlot('plot', [trace], layout);
       }
   });

</script>