[tor-commits] [metrics-web/master] Stop rounding y axis labels with units.

karsten at torproject.org karsten at torproject.org
Mon May 4 07:38:43 UTC 2020


commit 95d4c5a59bbc19902d70c06cf9720657c88686e5
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Mon May 4 09:33:19 2020 +0200

    Stop rounding y axis labels with units.
    
    The unit_format function in our somewhat outdated scales package
    rounds labels to whichever we accuracy we ask for. However, in some
    cases this is difficult to do right (e.g., Time to download files over
    Tor graph with measurements apparently getting faster over time), in
    other cases it's impossible (Advertised bandwidth distribution graph
    with 1st and 99th percentile having different orders of magnitude).
    
    The new custom_unit_format function does not round labels and instead
    determines more reasonably how many digits it needs to print.
    
    Fixes #34103.
---
 src/main/R/rserver/rserve-init.R | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/main/R/rserver/rserve-init.R b/src/main/R/rserver/rserve-init.R
index 2890da2..e1074ee 100644
--- a/src/main/R/rserver/rserve-init.R
+++ b/src/main/R/rserver/rserve-init.R
@@ -337,6 +337,16 @@ formatter <- function(x, ...) {
   format(x, ..., scientific = FALSE, big.mark = " ")
 }
 
+# Helper function that takes a unit as input and returns a format function that
+# takes breaks as input and returns labels with that unit as output. In contrast
+# to the unit_format function in our somewhat outdated scales package this
+# function determines more reasonably how many digits it needs to print.
+custom_unit_format <- function(unit) {
+  function(x) {
+    paste(format(x, scientific = FALSE, big.mark = " "), unit)
+  }
+}
+
 theme_update(
   # Make plot title centered, and leave some room to the plot.
   plot.title = element_text(hjust = 0.5, margin = margin(b = 11)),
@@ -515,7 +525,7 @@ plot_dirbytes <- function(start_p, end_p, path_p) {
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
     scale_y_continuous(name = "",
-      labels = unit_format(accuracy = 0.1, unit = "Gbit/s"),
+      labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_colour_hue(name = "",
         breaks = c("dirwrite", "dirread"),
@@ -589,7 +599,7 @@ plot_torperf <- function(start_p, end_p, server_p, filesize_p, path_p) {
     geom_line(aes(colour = source), size = 0.75) +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "s"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "s"),
       limits = c(0, NA)) +
     scale_fill_hue(name = "Source") +
     scale_colour_hue(name = "Source") +
@@ -677,7 +687,7 @@ plot_onionperf_buildtimes <- function(start_p, end_p, path_p) {
     facet_grid(position ~ .) +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "ms"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "ms"),
       limits = c(0, NA)) +
     scale_fill_hue(name = "Source") +
     scale_colour_hue(name = "Source") +
@@ -715,7 +725,7 @@ plot_onionperf_latencies <- function(start_p, end_p, server_p, path_p) {
     geom_line(aes(y = low, colour = source), size = 0.375) +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "ms"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "ms"),
       limits = c(0, NA)) +
     scale_fill_hue(name = "Source") +
     scale_colour_hue(name = "Source") +
@@ -755,7 +765,7 @@ plot_onionperf_throughput <- function(start_p, end_p, server_p, path_p) {
     geom_line(aes(y = low / 1000, colour = source), size = 0.375) +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "Mbps"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "Mbps"),
       limits = c(0, NA)) +
     scale_fill_hue(name = "Source") +
     scale_colour_hue(name = "Source") +
@@ -848,7 +858,7 @@ plot_bandwidth_flags <- function(start_p, end_p, path_p) {
     geom_area() +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "Gbit/s"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_fill_manual(name = "",
       values = c("#03B3FF", "#39FF02", "#FFFF00", "#AAAA99")) +
@@ -872,7 +882,7 @@ plot_bandwidth <- function(start_p, end_p, path_p) {
     geom_line() +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "Gbit/s"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_colour_hue(name = "", h.start = 90,
         breaks = c("advbw", "bwhist"),
@@ -1177,7 +1187,7 @@ plot_advbwdist_perc <- function(start_p, end_p, p_p, path_p) {
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
     scale_y_continuous(name = "",
-      labels = unit_format(accuracy = 0.01, unit = "Gbit/s"),
+      labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_colour_hue(name = "Percentile") +
     ggtitle("Advertised bandwidth distribution") +
@@ -1216,7 +1226,7 @@ plot_advbwdist_relay <- function(start_p, end_p, n_p, path_p) {
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
     scale_y_continuous(name = "",
-      labels = unit_format(accuracy = 0.01, unit = "Gbit/s"),
+      labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_colour_hue(name = "n") +
     ggtitle("Advertised bandwidth of n-th fastest relays") +
@@ -1277,7 +1287,7 @@ plot_hidserv_rend_relayed_cells <- function(start_p, end_p, path_p) {
     geom_line() +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "Gbit/s"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     ggtitle("Onion-service traffic") +
     labs(caption = copyright_notice)
@@ -1644,7 +1654,7 @@ plot_advbw_ipv6 <- function(start_p, end_p, path_p) {
     geom_line() +
     scale_x_date(name = "", breaks = custom_breaks,
       labels = custom_labels, minor_breaks = custom_minor_breaks) +
-    scale_y_continuous(name = "", labels = unit_format(unit = "Gbit/s"),
+    scale_y_continuous(name = "", labels = custom_unit_format(unit = "Gbit/s"),
       limits = c(0, NA)) +
     scale_colour_hue(name = "", h.start = 90,
       breaks = c("total", "total_guard", "total_exit", "reachable_guard",



More information about the tor-commits mailing list