Public
Edited
Feb 12, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
iarcCauseData=tracker.iarc.causesGetAll(false)
Insert cell
Insert cell
Plotly = require("https://cdn.plot.ly/plotly-latest.min.js")
Insert cell
async function getTable(){
var a = await fetch('https://raw.githubusercontent.com/filhoalm/monoapp1/main/data2102023b.csv')
var table = await a.text()
table=table.replaceAll('\r','').split('\n').map( x => x.split(';'))
var header=table[0]
table=table.slice(1).filter(x => x.length==header.length )
var rows = []
table.forEach( x => {
var dat={}
var i=0
var h=''
for (h of header){
dat[h]=x[i]
i+=1
}
rows.push(dat)
})
return rows
}

Insert cell
table = await getTable()
Insert cell
function getColumnUniqueValues(key){
var values = ['All']
table.forEach( x => {
var keys = Object.keys(x)
if(keys.includes(key)){
if( ! values.includes(x[key]) ){
values.push(x[key])
}
}
})
return values
}
Insert cell
evidences = getColumnUniqueValues('evidence')
Insert cell
viewof selEvidence = Inputs.select(evidences, {label: "Evidence Level"})
Insert cell
sites = getColumnUniqueValues('cancer_site')
Insert cell
viewof selSite = Inputs.select(sites, {label: "Cancer sites"})
Insert cell
subtypes = getColumnUniqueValues('cancer_subtype')
Insert cell
viewof selType = Inputs.select(subtypes, {label: "Cancer subtypes"})
Insert cell
function getOrderedFilteredAgentsData(){
var filtered = table
if(selEvidence!='All'){
filtered=filtered.filter( x => x['evidence']==selEvidence )
}
if(selSite!='All'){
filtered=filtered.filter( x => x['cancer_site']==selSite )
}
if(selType!='All'){
filtered=filtered.filter( x => x['cancer_subtype']==selType )
}

var agents={}
filtered.forEach(x => {
var keys = Object.keys(agents)
if( ! keys.includes(x['agent']) ){
agents[x['agent']] = 0
}
agents[x['agent']] += 1
})
var agentsDat={'x': Object.keys(agents), 'y': Object.values(agents)}
return agentsDat
}
Insert cell
{
var filtered = getOrderedFilteredAgentsData()
var trace = {
x: filtered['x'],
y: filtered['y'],
name: 'Agents',
marker: {color: 'rgb(26, 118, 255)'},
type: 'bar'
};
var data = [trace];
var layout = {
title: 'Agents filtered with constraints',
xaxis: {
title: 'Agents',
tickfont: {
size: 14,
color: 'rgb(107, 107, 107)'
}},
yaxis: {
title: 'Occurrences',
},
legend: {
x: 0,
y: 1.0,
bgcolor: 'rgba(255, 255, 255, 0)',
bordercolor: 'rgba(255, 255, 255, 0)'
},
barmode: 'group',
bargap: 0.15,
bargroupgap: 0.1,
width: width
};
const div = DOM.element('div');
Plotly.newPlot(div, data, layout);
return div;
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more