Skip to content

Instantly share code, notes, and snippets.

@stianSjoli
Last active October 21, 2018 17:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stianSjoli/f457e1d2e6d05b084db51d6150a44992 to your computer and use it in GitHub Desktop.
Save stianSjoli/f457e1d2e6d05b084db51d6150a44992 to your computer and use it in GitHub Desktop.
Scatterplot av humane-gener mot totalt antall basepar for de 23 kromosomene. Dataene er hentet fra første tabell i https://en.wikipedia.org/wiki/Chromosome.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>
<script id="jsbin-source-html" type="text/html"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<script src="https://d3js.org/d3.v5.min.js"><\/script>
</head>
<body>
</body>
<script>
var data= [
{chromosome:1,genes:2000,totalBasePairs:247199719},
{chromosome:2,genes:1300,totalBasePairs:242751149},
{chromosome:3,genes:1000,totalBasePairs:199446827},
{chromosome:4,genes:1000,totalBasePairs:191263063},
{chromosome:5,genes:900,totalBasePairs:180837866},
{chromosome:6,genes:1000,totalBasePairs:170896993},
{chromosome:7,genes:900,totalBasePairs:158821424},
{chromosome:8,genes:700,totalBasePairs:146274826},
{chromosome:9,genes:800,totalBasePairs:140442298},
{chromosome:10,genes:700,totalBasePairs:135374737},
{chromosome:11,genes:1300,totalBasePairs:134452384},
{chromosome:12,genes:1100,totalBasePairs:132289534},
{chromosome:13,genes:300,totalBasePairs:114127980},
{chromosome:14,genes:800,totalBasePairs:106360585},
{chromosome:15,genes:600,totalBasePairs:100338915},
{chromosome:16,genes:800,totalBasePairs:88822254},
{chromosome:17,genes:1200,totalBasePairs:78654742},
{chromosome:18,genes:200,totalBasePairs:76117153},
{chromosome:19,genes:1500,totalBasePairs:63806651},
{chromosome:20,genes:500, totalBasePairs:62435965},
{chromosome:21,genes:200,totalBasePairs:46944323},
{chromosome:22,genes:500,totalBasePairs:49528953},
{chromosome:"X", genes: 800, totalBasePairs:154913754},
{chromosome:"Y", genes:50, totalBasePairs:57741652}]
function getChromosome(d){
return d.chromosome;
}
function getGeneCount(d){
return d.genes;
}
function getTotalBasePairs(d){
return d.totalBasePairs / 1000000;
}
var height = 500;
var width = 500;
var padding = 100;
var svg = d3.select("body")
.append("svg")
.attr("height", height)
.attr("width", width)
var xScale = d3.scaleLinear()
.domain([d3.min(data, getTotalBasePairs), d3.max(data,getTotalBasePairs)])
.nice()
.range([0, width - padding]);
var yScale = d3.scaleLinear()
.domain([d3.min(data, getGeneCount), d3.max(data,getGeneCount)+200])
.nice()
.range([height-padding, padding]);
var xAxis = d3.axisBottom()
.scale(xScale);
var yAxis = d3.axisLeft()
.scale(yScale)
.tickFormat(function(d){
return d;
})
var xAxisG = svg.append("g")
.attr("transform", "translate(" + 50 + "," + (height-padding) + ")")
.classed("axis", true)
.call(xAxis)
xAxisG.append("text")
.attr("x", (width-padding)/2)
.attr("y", padding/2)
.text("Millioner basepar")
.attr("font-family", "sans-serif")
.attr("font-size", "14px")
.attr("fill", "black");
var yAxisG = svg.append("g")
.attr("transform", "translate(" + 50 + "," + 0 + ")")
.classed("axis",true)
.call(yAxis)
yAxisG.append("text")
.attr("x", 0)
.attr("y", 85)
.text("Gener")
.attr("font-family", "sans-serif")
.attr("font-size", "14px")
.attr("fill", "black");
svg.selectAll("circle")
.data(data)
.enter()
.append("circle")
.attr("cy", function(d){
return yScale(getGeneCount(d));
})
.attr("cx",function(d){
return 50 + xScale(getTotalBasePairs(d))
})
.attr("r","10px")
.attr("fill", function(d){
const chromosome = getChromosome(d);
if(chromosome === "Y"){
return "steelblue";
}else if(chromosome === "X"){
return "#ffa6c9";
} else {
return "grey";
}
})
.attr("opacity",1)
.attr("stroke", "black")
.attr("stroke-width","1px")
svg.selectAll(".gene")
.data(data)
.enter()
.append("text")
.classed("gene", true)
.attr("text-anchor", "middle")
.attr("y", function(d){
return yScale(getGeneCount(d)) + 3;
})
.attr("x", function(d){
return 50 + xScale(getTotalBasePairs(d));
})
.attr("fill","white")
.attr("font-size", "12px")
.text(function(d){
return getChromosome(d);
})
<\/script>
</html>
</script>
</body>
<script>
var data= [
{chromosome:1,genes:2000,totalBasePairs:247199719},
{chromosome:2,genes:1300,totalBasePairs:242751149},
{chromosome:3,genes:1000,totalBasePairs:199446827},
{chromosome:4,genes:1000,totalBasePairs:191263063},
{chromosome:5,genes:900,totalBasePairs:180837866},
{chromosome:6,genes:1000,totalBasePairs:170896993},
{chromosome:7,genes:900,totalBasePairs:158821424},
{chromosome:8,genes:700,totalBasePairs:146274826},
{chromosome:9,genes:800,totalBasePairs:140442298},
{chromosome:10,genes:700,totalBasePairs:135374737},
{chromosome:11,genes:1300,totalBasePairs:134452384},
{chromosome:12,genes:1100,totalBasePairs:132289534},
{chromosome:13,genes:300,totalBasePairs:114127980},
{chromosome:14,genes:800,totalBasePairs:106360585},
{chromosome:15,genes:600,totalBasePairs:100338915},
{chromosome:16,genes:800,totalBasePairs:88822254},
{chromosome:17,genes:1200,totalBasePairs:78654742},
{chromosome:18,genes:200,totalBasePairs:76117153},
{chromosome:19,genes:1500,totalBasePairs:63806651},
{chromosome:20,genes:500, totalBasePairs:62435965},
{chromosome:21,genes:200,totalBasePairs:46944323},
{chromosome:22,genes:500,totalBasePairs:49528953},
{chromosome:"X", genes: 800, totalBasePairs:154913754},
{chromosome:"Y", genes:50, totalBasePairs:57741652}]
function getChromosome(d){
return d.chromosome;
}
function getGeneCount(d){
return d.genes;
}
function getTotalBasePairs(d){
return d.totalBasePairs / 1000000;
}
var height = 500;
var width = 500;
var padding = 100;
var svg = d3.select("body")
.append("svg")
.attr("height", height)
.attr("width", width)
var xScale = d3.scaleLinear()
.domain([d3.min(data, getTotalBasePairs), d3.max(data,getTotalBasePairs)])
.nice()
.range([0, width - padding]);
var yScale = d3.scaleLinear()
.domain([d3.min(data, getGeneCount), d3.max(data,getGeneCount)+200])
.nice()
.range([height-padding, padding]);
var xAxis = d3.axisBottom()
.scale(xScale);
var yAxis = d3.axisLeft()
.scale(yScale)
.tickFormat(function(d){
return d;
})
var xAxisG = svg.append("g")
.attr("transform", "translate(" + 50 + "," + (height-padding) + ")")
.classed("axis", true)
.call(xAxis)
xAxisG.append("text")
.attr("x", (width-padding)/2)
.attr("y", padding/2)
.text("Millioner basepar")
.attr("font-family", "sans-serif")
.attr("font-size", "14px")
.attr("fill", "black");
var yAxisG = svg.append("g")
.attr("transform", "translate(" + 50 + "," + 0 + ")")
.classed("axis",true)
.call(yAxis)
yAxisG.append("text")
.attr("x", 0)
.attr("y", 85)
.text("Gener")
.attr("font-family", "sans-serif")
.attr("font-size", "14px")
.attr("fill", "black");
svg.selectAll("circle")
.data(data)
.enter()
.append("circle")
.attr("cy", function(d){
return yScale(getGeneCount(d));
})
.attr("cx",function(d){
return 50 + xScale(getTotalBasePairs(d))
})
.attr("r","10px")
.attr("fill", function(d){
const chromosome = getChromosome(d);
if(chromosome === "Y"){
return "steelblue";
}else if(chromosome === "X"){
return "#ffa6c9";
} else {
return "grey";
}
})
.attr("opacity",1)
.attr("stroke", "black")
.attr("stroke-width","1px")
svg.selectAll(".gene")
.data(data)
.enter()
.append("text")
.classed("gene", true)
.attr("text-anchor", "middle")
.attr("y", function(d){
return yScale(getGeneCount(d)) + 3;
})
.attr("x", function(d){
return 50 + xScale(getTotalBasePairs(d));
})
.attr("fill","white")
.attr("font-size", "12px")
.text(function(d){
return getChromosome(d);
})
</script>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment