-
Notifications
You must be signed in to change notification settings - Fork 0
/
BellyButton_bubble_chart_starter_code.js
100 lines (73 loc) · 2.68 KB
/
BellyButton_bubble_chart_starter_code.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
function init() {
// Grab a reference to the dropdown select element
var selector = d3.select("#selDataset");
// Use the list of sample names to populate the select options
d3.json("samples.json").then((data) => {
var sampleNames = data.names;
sampleNames.forEach((sample) => {
selector
.append("option")
.text(sample)
.property("value", sample);
});
// Use the first sample from the list to build the initial plots
var firstSample = sampleNames[0];
buildCharts(firstSample);
buildMetadata(firstSample);
});
}
// Initialize the dashboard
init();
function optionChanged(newSample) {
// Fetch new data each time a new sample is selected
buildMetadata(newSample);
buildCharts(newSample);
}
// Demographics Panel
function buildMetadata(sample) {
d3.json("samples.json").then((data) => {
var metadata = data.metadata;
// Filter the data for the object with the desired sample number
var resultArray = metadata.filter(sampleObj => sampleObj.id == sample);
var result = resultArray[0];
// Use d3 to select the panel with id of `#sample-metadata`
var PANEL = d3.select("#sample-metadata");
// Use `.html("") to clear any existing metadata
PANEL.html("");
// Use `Object.entries` to add each key and value pair to the panel
// Hint: Inside the loop, you will need to use d3 to append new
// tags for each key-value in the metadata.
Object.entries(result).forEach(([key, value]) => {
PANEL.append("h6").text(`${key.toUpperCase()}: ${value}`);
});
});
}
// Bar and Bubble charts
// Create the buildCharts function.
function buildCharts(sample) {
// Use d3.json to load and retrieve the samples.json file
d3.json("samples.json").then((data) => {
// Create a variable that holds the samples array.
// Create a variable that filters the samples for the object with the desired sample number.
// Create a variable that holds the first sample in the array.
// Create variables that hold the otu_ids, otu_labels, and sample_values.
// Create the yticks for the bar chart.
// Hint: Get the the top 10 otu_ids and map them in descending order
// so the otu_ids with the most bacteria are last.
var yticks =
// Create the trace for the bar chart.
var barData = [
];
// Create the layout for the bar chart.
var barLayout = {
};
// Use Plotly to plot the data with the layout.
// 1. Create the trace for the bubble chart.
var bubbleData = [
];
// 2. Create the layout for the bubble chart.
var bubbleLayout = {
};
// 3. Use Plotly to plot the data with the layout.
});
}