diff --git a/wally/charts.py b/wally/charts.py
index 12d735f..828438c 100644
--- a/wally/charts.py
+++ b/wally/charts.py
@@ -67,16 +67,26 @@
         [l[0] for l in lines]
 
     bar.dataset(dataset, series=len(bars_data))
-    bar.axes.type('xyy')
-    bar.axes.label(2, None, label_x)
+
+    axes_type = ""
 
     if scale_x:
         bar.axes.label(0, *scale_x)
+        axes_type += "x"
+    if label_x:
+        bar.axes.style(len(axes_type), '000000', '13')
+        bar.axes.label(len(axes_type), label_x)
+        axes_type += "x"
 
     max_value = (max([max(l) for l in dataset[:2]]))
-    bar.axes.range(1, 0, max_value)
-    bar.axes.style(1, 'N*s*')
-    bar.axes.style(2, '000000', '13')
+    bar.axes.range(len(axes_type), 0, max_value)
+    bar.axes.style(len(axes_type), 'N*s*')
+    axes_type += "y"
+
+    if label_y:
+        bar.axes.style(len(axes_type), '000000', '13')
+        bar.axes.label(len(axes_type), None, label_y)
+        axes_type += "y"
 
     bar.scale(*[0, max_value] * 3)
 
@@ -87,8 +97,6 @@
     bar.color(*COLORS)
     bar.size(width, height)
 
-    axes_type = "xyy"
-
     scale = [0, max_value] * len(bars_dev_top + bars_dev_bottom + bars_data)
     if lines:
         line_n = 0
diff --git a/wally/report.py b/wally/report.py
index e435a6a..209fa31 100644
--- a/wally/report.py
+++ b/wally/report.py
@@ -102,6 +102,8 @@
 
     for name in info.__dict__:
         if not name.startswith('__'):
+            if info.__dict__[name] == "-":
+                continue
             info.__dict__[name] = round_3_digit(info.__dict__[name])
 
     report = templ.format(lab_info=lab_description, **info.__dict__)
@@ -140,7 +142,8 @@
     latv = [lat / 1000 for lat in latv]
     ch = charts.render_vertical_bar(title, legend, [bar_data], [bar_dev_top],
                                     [bar_dev_bottom], file_name=fname,
-                                    scale_x=concurence,
+                                    scale_x=concurence, label_x="clients",
+                                    label_y="iops",
                                     lines=[
                                         (latv, "msec", "rr", "lat"),
                                         (iops_or_bw_per_vm, None, None,
