diff --git a/static/js/stats/stats.js b/static/js/stats/stats.js
index 5fcfce64d2..23bc1bac8b 100644
--- a/static/js/stats/stats.js
+++ b/static/js/stats/stats.js
@@ -3,20 +3,16 @@ var font_14pt = {
     size: 14,
     color: '#000000',
 };
-var button_selected = '#D8D8D8';
-var button_unselected = '#F0F0F0';
+
 var last_full_update = Math.min();
 
 // TODO: should take a dict of arrays and do it for all keys
 function partial_sums(array) {
-    var count = 0;
-    var cumulative = [];
-
-    for (var i = 0; i < array.length; i += 1) {
-        count += array[i];
-        cumulative[i] = count;
-    }
-    return cumulative;
+    var accumulator = 0;
+    return array.map(function (o) {
+        accumulator += o;
+        return accumulator;
+    });
 }
 
 // Assumes date is a round number of hours
@@ -34,24 +30,17 @@ function floor_to_local_week(date) {
 }
 
 function format_date(date, include_hour) {
-    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+    var months = ['January', 'February', 'March', 'April', 'May', 'June',
+                  'July', 'August', 'September', 'October', 'November', 'December'];
     var month_str = months[date.getMonth()];
     var year = date.getFullYear();
     var day = date.getDate();
     if (include_hour) {
         var hour = date.getHours();
-        var hour_str;
-        if (hour === 0) {
-            hour_str = '12 AM';
-        } else if (hour === 12) {
-            hour_str = '12 PM';
-        } else if (hour < 12) {
-            hour_str = hour + ' AM';
-        } else {
-            hour_str = (hour-12) + ' PM';
-        }
-        return month_str + ' ' + day + ', ' + hour_str;
+
+        var str = hour >= 12 ? "PM" : "AM";
+
+        return month_str + " " + day + ", " + (hour % 12) + ":00" + str;
     }
     return month_str + ' ' + day + ', ' + year;
 }
@@ -143,6 +132,7 @@ function populate_messages_sent_over_time(data) {
 
     function add_hover_handler() {
         document.getElementById('id_messages_sent_over_time').on('plotly_hover', function (data) {
+            $("#hoverinfo").show();
             document.getElementById('hover_date').innerText =
                 data.points[0].data.text[data.points[0].pointNumber];
             var values = [null, null, null];
@@ -251,10 +241,7 @@ function populate_messages_sent_over_time(data) {
     var clicked_cumulative = false;
 
     function draw_or_update_plot(rangeselector, traces, last_value_is_partial, initial_draw) {
-        $('#daily_button').css('background', button_unselected);
-        $('#weekly_button').css('background', button_unselected);
-        $('#hourly_button').css('background', button_unselected);
-        $('#cumulative_button').css('background', button_unselected);
+        $('#daily_button, #weekly_button, #hourly_button, #cumulative_button').removeClass("selected");
         if (initial_draw) {
             traces.human.visible = true;
             traces.bot.visible = 'legendonly';
@@ -281,36 +268,36 @@ function populate_messages_sent_over_time(data) {
     // Click handlers for aggregation buttons
     $('#hourly_button').click(function () {
         draw_or_update_plot(hourly_rangeselector, hourly_traces, false, false);
-        $(this).css('background', button_selected);
+        $(this).addClass("selected");
         clicked_cumulative = false;
     });
 
     $('#daily_button').click(function () {
         draw_or_update_plot(daily_rangeselector, daily_traces, last_day_is_partial, false);
-        $(this).css('background', button_selected);
+        $(this).addClass("selected");
         clicked_cumulative = false;
     });
 
     $('#weekly_button').click(function () {
         draw_or_update_plot(weekly_rangeselector, weekly_traces, last_week_is_partial, false);
-        $(this).css('background', button_selected);
+        $(this).addClass("selected");
         clicked_cumulative = false;
     });
 
     $('#cumulative_button').click(function () {
         clicked_cumulative = false;
         draw_or_update_plot(daily_rangeselector, cumulative_traces, false, false);
-        $(this).css('background', button_selected);
+        $(this).addClass("selected");
         clicked_cumulative = true;
     });
 
     // Initial drawing of plot
     if (weekly_traces.human.x.length < 12) {
         draw_or_update_plot(daily_rangeselector, daily_traces, last_day_is_partial, true);
-        $('#daily_button').css('background', button_selected);
+        $('#daily_button').addClass("selected");
     } else {
         draw_or_update_plot(weekly_rangeselector, weekly_traces, last_week_is_partial, true);
-        $('#weekly_button').css('background', button_selected);
+        $('#weekly_button').addClass("selected");
     }
 }
 
@@ -336,8 +323,15 @@ function round_to_percentages(values, total) {
             return '0%';
         }
         var unrounded = x/total*100;
-        var precision = Math.min(6, Math.max(2, Math.floor(
-                -Math.log(100-unrounded)/Math.log(10)) + 3));
+
+        var precision = Math.min(
+            6, // this is the max precision (two #, 4 decimal points; 99.9999%).
+            Math.max(
+                2, // the minimum amount of precision (40% or 6.0%).
+                Math.floor(-Math.log10(100 - unrounded)) + 3
+            )
+        );
+
         return unrounded.toPrecision(precision) + '%';
     });
 }
@@ -462,23 +456,18 @@ function populate_messages_sent_by_client(data) {
     var time_button;
     if (data.end_times.length >= 30) {
         time_button = 'month';
-        $('#messages_by_client_last_month_button').css('background', button_selected);
+        $('#messages_by_client_last_month_button').addClass("selected");
     } else {
         time_button = 'cumulative';
-        $('#messages_by_client_cumulative_button').css('background', button_selected);
-    }
-
-    function remove_button(button_id) {
-        var elem = document.getElementById(button_id);
-        elem.parentNode.removeChild(elem);
+        $('#messages_by_client_cumulative_button').addClass("selected");
     }
 
     if (data.end_times.length < 365) {
-        remove_button('messages_by_client_last_year_button');
+        $("#pie_messages_sent_by_client button[data-time='year']").remove();
         if (data.end_times.length < 30) {
-            remove_button('messages_by_client_last_month_button');
+            $("#pie_messages_sent_by_client button[data-time='month']").remove();
             if (data.end_times.length < 7) {
-                remove_button('messages_by_client_last_week_button');
+                $("#pie_messages_sent_by_client button[data-time='week']").remove();
             }
         }
     }
@@ -497,52 +486,24 @@ function populate_messages_sent_by_client(data) {
 
     // Click handlers
     function set_user_button(button) {
-        $('#messages_by_client_realm_button').css('background', button_unselected);
-        $('#messages_by_client_user_button').css('background', button_unselected);
-        button.css('background', button_selected);
+        $("#pie_messages_sent_by_client button[data-user]").removeClass("selected");
+        button.addClass("selected");
     }
 
     function set_time_button(button) {
-        $('#messages_by_client_cumulative_button').css('background', button_unselected);
-        $('#messages_by_client_last_year_button').css('background', button_unselected);
-        $('#messages_by_client_last_month_button').css('background', button_unselected);
-        $('#messages_by_client_last_week_button').css('background', button_unselected);
-        button.css('background', button_selected);
+        $("#pie_messages_sent_by_client button[data-time]").removeClass("selected");
+        button.addClass("selected");
     }
 
-    $('#messages_by_client_realm_button').click(function () {
-        set_user_button($(this));
-        user_button = 'realm';
-        draw_plot();
-    });
-
-    $('#messages_by_client_user_button').click(function () {
-        set_user_button($(this));
-        user_button = 'user';
-        draw_plot();
-    });
-
-    $('#messages_by_client_cumulative_button').click(function () {
-        set_time_button($(this));
-        time_button = 'cumulative';
-        draw_plot();
-    });
-
-    $('#messages_by_client_last_year_button').click(function () {
-        set_time_button($(this));
-        time_button = 'year';
-        draw_plot();
-    });
-
-    $('#messages_by_client_last_month_button').click(function () {
-        set_time_button($(this));
-        time_button = 'month';
-        draw_plot();
-    });
-
-    $('#messages_by_client_last_week_button').click(function () {
-        set_time_button($(this));
-        time_button = 'week';
+    $("#pie_messages_sent_by_client button").click(function () {
+        if ($(this).attr("data-user")) {
+            set_user_button($(this));
+            user_button = $(this).attr("data-user");
+        }
+        if ($(this).attr("data-time")) {
+            set_time_button($(this));
+            time_button = $(this).attr("data-time");
+        }
         draw_plot();
     });
 
@@ -578,7 +539,7 @@ $.get({
 function populate_messages_sent_by_message_type(data) {
     var layout = {
         margin: { l: 90, r: 0, b: 0, t: 0 },
-        width: 550,
+        width: 750,
         height: 300,
         font: font_14pt,
     };
@@ -605,7 +566,7 @@ function populate_messages_sent_by_message_type(data) {
                     colors: ['#68537c', '#be6d68', '#b3b348'],
                 },
             },
-            total_str: "Total messages: " + plot_data.total.toString().
+            total_str: "Total messages: " + plot_data.total.toString().
                 replace(/\B(?=(\d{3})+(?!\d))/g, ","),
         };
     }
@@ -629,24 +590,19 @@ function populate_messages_sent_by_message_type(data) {
     var time_button;
     if (data.end_times.length >= 30) {
         time_button = 'month';
-        $('#messages_by_type_last_month_button').css('background', button_selected);
+        $('#messages_by_type_last_month_button').addClass("selected");
     } else {
         time_button = 'cumulative';
-        $('#messages_by_type_cumulative_button').css('background', button_selected);
+        $('#messages_by_type_cumulative_button').addClass("selected");
     }
     var totaldiv = document.getElementById('pie_messages_sent_by_type_total');
 
-    function remove_button(button_id) {
-        var elem = document.getElementById(button_id);
-        elem.parentNode.removeChild(elem);
-    }
-
     if (data.end_times.length < 365) {
-        remove_button('messages_by_type_last_year_button');
+        $("#pie_messages_sent_by_type button[data-time='year']").remove();
         if (data.end_times.length < 30) {
-            remove_button('messages_by_type_last_month_button');
+            $("#pie_messages_sent_by_type button[data-time='month']").remove();
             if (data.end_times.length < 7) {
-                remove_button('messages_by_type_last_week_button');
+                $("#pie_messages_sent_by_type button[data-time='week']").remove();
             }
         }
     }
@@ -663,52 +619,24 @@ function populate_messages_sent_by_message_type(data) {
 
     // Click handlers
     function set_user_button(button) {
-        $('#messages_by_type_realm_button').css('background', button_unselected);
-        $('#messages_by_type_user_button').css('background', button_unselected);
-        button.css('background', button_selected);
+        $("#pie_messages_sent_by_type button[data-user]").removeClass("selected");
+        button.addClass("selected");
     }
 
     function set_time_button(button) {
-        $('#messages_by_type_cumulative_button').css('background', button_unselected);
-        $('#messages_by_type_last_year_button').css('background', button_unselected);
-        $('#messages_by_type_last_month_button').css('background', button_unselected);
-        $('#messages_by_type_last_week_button').css('background', button_unselected);
-        button.css('background', button_selected);
+        $("#pie_messages_sent_by_type button[data-time]").removeClass("selected");
+        button.addClass("selected");
     }
 
-    $('#messages_by_type_realm_button').click(function () {
-        set_user_button($(this));
-        user_button = 'realm';
-        draw_plot();
-    });
-
-    $('#messages_by_type_user_button').click(function () {
-        set_user_button($(this));
-        user_button = 'user';
-        draw_plot();
-    });
-
-    $('#messages_by_type_cumulative_button').click(function () {
-        set_time_button($(this));
-        time_button = 'cumulative';
-        draw_plot();
-    });
-
-    $('#messages_by_type_last_year_button').click(function () {
-        set_time_button($(this));
-        time_button = 'year';
-        draw_plot();
-    });
-
-    $('#messages_by_type_last_month_button').click(function () {
-        set_time_button($(this));
-        time_button = 'month';
-        draw_plot();
-    });
-
-    $('#messages_by_type_last_week_button').click(function () {
-        set_time_button($(this));
-        time_button = 'week';
+    $("#pie_messages_sent_by_type button").click(function () {
+        if ($(this).attr("data-user")) {
+            set_user_button($(this));
+            user_button = $(this).attr("data-user");
+        }
+        if ($(this).attr("data-time")) {
+            set_time_button($(this));
+            time_button = $(this).attr("data-time");
+        }
         draw_plot();
     });
 }
@@ -737,7 +665,7 @@ function populate_number_of_users(data) {
             fixedrange: true,
             rangeselector: {
                 x: 0.808,
-                y: -0.2,
+                y: -0.33,
                 buttons: [
                     {
                         count: 30,
@@ -763,9 +691,7 @@ function populate_number_of_users(data) {
         return new Date(timestamp*1000);
     });
 
-    var text = end_dates.map(function (date) {
-        return format_date(date, false);
-    });
+    var text = end_dates.map(format_date);
 
     var trace = {
         x: end_dates,
@@ -780,10 +706,10 @@ function populate_number_of_users(data) {
     Plotly.newPlot('id_number_of_users', [trace], layout, {displayModeBar: false});
 
     document.getElementById('id_number_of_users').on('plotly_hover', function (data) {
-        document.getElementById('users_hover_date').innerText =
-            data.points[0].data.text[data.points[0].pointNumber];
-        document.getElementById('users_hover_humans').style.display = 'inline';
-        document.getElementById('users_hover_humans_value').innerText = data.points[0].y;
+        $("#users_hover_info").show();
+        $("#users_hover_date").text(data.points[0].data.text[data.points[0].pointNumber]);
+        $("#users_hover_humans").css("display", "inline");
+        $("#users_hover_humans_value").text(data.points[0].y);
     });
 }
 
diff --git a/static/styles/stats.css b/static/styles/stats.css
index 0f722bcd0e..8f164ee6eb 100644
--- a/static/styles/stats.css
+++ b/static/styles/stats.css
@@ -6,90 +6,112 @@
 
 body {
     font-family: 'Humbug', 'Helvetica Neue', sans-serif !important;
+    background-color: #fafafa;
+
+    -webkit-font-smoothing: antialiased;
 }
 
 p {
     margin-bottom: 0px;
 }
 
-svg {
-    -webkit-font-smoothing: antialiased;
+.svg-container {
+    margin: 20px;
+}
+
+.center-charts {
+    margin: 30px auto;
+    width: 790px; /* chart = 750px + 20px padding */
+}
+
+.chart-container {
+    display: inline-block;
+    vertical-align: top;
+
+    margin: 10px 0px;
+    padding: 20px;
+
+    border: 2px solid #eee;
+    background-color: #fff;
+}
+
+.analytics-page-header {
+    margin-left: 10px;
+}
+
+hr {
+    border-width: 2px;
+}
+
+.rangeselector text {
+    font-weight: 400;
+}
+
+.pie-chart .number-stat {
+    float: left;
+    font-size: 0.8em;
+    font-weight: 500;
+}
+
+.chart-container:not(.pie-chart) .number-stat {
+    position: relative;
+    top: -30px;
+}
+
+.buttons button {
+    background-color: #f0f0f0;
+}
+
+.buttons button.selected {
+    background-color: #d8d8d8;
+}
+
+.pie-chart .buttons {
+    float: right;
+}
+
+.pie-chart .buttons button {
+    padding: 2px 6px;
+}
+
+.chart-container.pie-chart hr {
+    margin-bottom: 8px;
+}
+
+.chart-container button {
+    position: relative;
+    z-index: 1;
+}
+
+.chart-container h1 {
+    margin-top: 0px;
+    font-size: 1.5em;
+}
+
+.chart-container .button-container {
+    position: relative;
+    z-index: 1;
+}
+
+.chart-container .button-container label {
+    margin: 3px;
+}
+
+.chart-container .button-container > * {
+    display: inline-block;
+    vertical-align: top;
 }
 
 .alert {
     display: none;
 }
 
-.analytics-page-header {
-    margin-top: 30px;
-    margin-bottom: 50px;
-    text-align: center;
-    font-size: 36px;
-}
-
-.page-content {
-    width: 100%;
-    overflow: auto;
-    display: inline-block;
-    vertical-align: top;
-}
-
-.center-container {
-    min-height: 0px;
-}
-
-.graph-title {
-    text-align: center;
-    font-size: 20px;
-    margin-bottom: 30px;
-}
-
-#graph_container {
-    position: relative;
-}
-
-#button_label {
-    font-size: 15px;
-    margin-left: 40px;
-    margin-bottom: 0px;
-}
-
-#hoverinfo {
-    position: relative;
-    top: -33px;
-    height: 0;
-    width: 400px;
-    z-index: 1;
-    font-size: 14px;
-    margin-left: 40px;
-}
-
-#id_messages_sent_over_time {
-    user-select: none;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-}
-
 #id_messages_sent_over_time[last_value_is_partial='true'] .points path:last-of-type {
     opacity: 0.5;
 }
 
-#hover_date {
-    font-weight: 400;
-}
-
-#hover_human {
-    font-weight: 400;
-    margin-left: 10px;
-    display: none;
-}
-
-#hover_me,
-#hover_bot {
-    font-weight: 400;
-    margin-left: 8px;
+#users_hover_info,
+#hoverinfo {
     display: none;
 }
 
@@ -104,181 +126,8 @@ svg {
     background: hsl(0, 0%, 84%) !important;
 }
 
-.pie-button {
-    font-family: 'Humbug', 'Helvetica Neue', sans-serif !important;
-    font-weight: inherit;
-    border: none;
-    border-radius: 4px;
-    padding: 0px 5px 0px 5px;
-    margin: 5px 0px 0px 0px;
-}
-
-.pie-button:hover {
-    background: hsl(0, 0%, 84%) !important;
-}
-
-#button_container {
-    position: absolute;
-    top: -12px;
-    z-index: 1;
-}
-
-#hourly_button {
-    padding: 0px 5px 0px 5px;
-    font-size: 14px;
-    margin-left: 40px;
-    margin-top: 0px;
-    background: hsl(0, 0%, 94%);
-}
-
-#daily_button {
-    padding: 0px 5px 0px 5px;
-    font-size: 14px;
-    margin-top: 0px;
-    background: hsl(0, 0%, 94%);
-}
-
-#weekly_button {
-    padding: 0px 5px 0px 5px;
-    font-size: 14px;
-    margin-top: 0px;
-    background: hsl(0, 0%, 94%);
-}
-
-#cumulative_button {
-    padding: 0px 5px 0px 5px;
-    font-size: 14px;
-    margin-top: 0px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_client_realm_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 84%);
-}
-
-#messages_by_client_user_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_client_cumulative_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_client_last_year_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_client_last_month_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_client_last_week_button {
-    font-size: 14px;
-    margin-left: 50px;
-    background: hsl(0, 0%, 94%);
-}
-
-#messages_by_type_realm_button {
-    font-size: 14px;
-    margin-bottom: 100px;
-    background: hsl(0, 0%, 84%);
-}
-
-#messages_by_type_user_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-    margin-bottom: 100px;
-}
-
-#messages_by_type_cumulative_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-    vertical-align: top;
-}
-
-#messages_by_type_last_year_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-    vertical-align: top;
-}
-
-#messages_by_type_last_month_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-    vertical-align: top;
-}
-
-#messages_by_type_last_week_button {
-    font-size: 14px;
-    background: hsl(0, 0%, 94%);
-    vertical-align: top;
-    margin-left: 50px;
-}
-
-#pie_container {
-    text-align: center;
-}
-
-#pie_messages_sent_by_client {
-    display: inline-block;
-    vertical-align: top;
-    margin: 100px 40px 0px 0px;
-}
-
-#pie_messages_sent_by_type {
-    display: inline-block;
-    vertical-align: top;
-    margin: 100px 0px 0px 0px;
-}
-
-#pie_messages_sent_by_client_total {
-    font-size: 14px;
-    text-align: left;
-    margin: 0px 0px 5px 45px;
-}
-
-#pie_messages_sent_by_type_total {
-    font-size: 14px;
-    text-align: left;
-    margin: 0px 0px 5px 53px;
-}
-
-#users_hover_info {
-    position: relative;
-    top: -65px;
-    height: 0;
-    width: 400px;
-    z-index: 1;
-    font-size: 14px;
-    margin-left: 20px;
-}
-
-#users_hover_date {
-    font-weight: 400;
-    margin-left: 18px;
-}
-
-#users_hover_humans {
-    font-weight: 400;
-    margin-left: 18px;
-    display: none;
-}
-
-.last-update {
-    display: none;
-    color: hsl(0, 0%, 66%);
-    padding: 50px 0px;
-    font-weight: bolder;
-    font-size: 16px;
-}
-
-.last-update .icon-vector-question-sign {
-    margin-left: 5px;
+.button[data-user="realm"] {
+    margin-right: 10px;
 }
 
 .tooltip-inner {
@@ -291,9 +140,49 @@ svg {
     line-height: 1.4;
 }
 
-@media (max-width: 1127px) {
-    #pie_messages_sent_by_client {
-        margin-right: 0px;
-        margin-bottom: 40px;
+.last-update {
+    margin: 0px 0px 30px 0px;
+
+    font-size: 0.8em;
+    font-weight: 400;
+    text-align: center;
+    color: #aaa;
+}
+
+#users_hover_info,
+#hoverinfo {
+    font-size: 0.8em;
+    font-weight: 500;
+}
+
+#users_hover_humans,
+#hover_human {
+    margin-left: 10px;
+}
+
+#hoverinfo,
+#users_hover_info {
+    position: relative;
+    height: 0px;
+    top: -35px;
+    left: 40px;
+}
+
+#users_hover_info {
+    left: 25px;
+    top: -40px;
+}
+
+@media (min-width: 1680px) {
+    .center-charts {
+        width: calc(816px * 2); /* 790px + 4px for borders + 2px for il-block + 20px margins */
+    }
+    .center-charts .left,
+    .center-charts .right {
+        display: inline-block;
+        vertical-align: top;
+        margin: 0px 10px;
+
+        width: 790px;
     }
 }
diff --git a/templates/analytics/stats.html b/templates/analytics/stats.html
index 40c5aa18aa..c208d7fc09 100644
--- a/templates/analytics/stats.html
+++ b/templates/analytics/stats.html
@@ -12,74 +12,83 @@
 
 
   
-  
-  
-    
-      
Messages Sent Over Time
-