diff --git a/sohstationviewer/model/reftek/log_info.py b/sohstationviewer/model/reftek/log_info.py
index c6f50e73ea21ae6923154774a4b5fea2826381ca..26e17ecb20149ec2a9badc9bf886fb5265d625f8 100644
--- a/sohstationviewer/model/reftek/log_info.py
+++ b/sohstationviewer/model/reftek/log_info.py
@@ -457,7 +457,7 @@ class LogInfo():
             elif "EXTERNAL CLOCK IS UNLOCKED" in line:
                 epoch = self.simple_read(line)[1]
                 if epoch:
-                    self.add_chan_info('GPS Lk/Unlk', epoch, 0, idx)
+                    self.add_chan_info('GPS Lk/Unlk', epoch, -1, idx)
             elif "EXTERNAL CLOCK IS LOCKED" in line:
                 epoch = self.simple_read(line)[1]
                 if epoch:
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting.py b/sohstationviewer/view/plotting/plotting_widget/plotting.py
index ec2ab8e8a7b6c12a7cddc176caf44bb4e6df2271..9e28f8d144e50fcd587ae5a7d2a8e41c310709d5 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting.py
@@ -1,4 +1,6 @@
 # class with all plotting functions
+import numpy as np
+
 from sohstationviewer.controller.util import get_val
 from sohstationviewer.controller.plotting_data import get_masspos_value_colors
 
@@ -75,8 +77,10 @@ class Plotting:
         if chan_db_info['valueColors'] in [None, 'None', '']:
             chan_db_info['valueColors'] = '*:W'
         value_colors = chan_db_info['valueColors'].split('|')
+        colors = []
         for vc in value_colors:
             v, c = vc.split(':')
+            colors.append(c)
             val = get_val(v)
             if c == '_':
                 prev_val = val
@@ -104,9 +108,14 @@ class Plotting:
         total_samples = len(x)
 
         x = sorted(x)
+        if len(colors) != 1:
+            sample_no_colors = [clr['W']]
+        else:
+            sample_no_colors = [clr[colors[0]]]
+
         self.plotting_axes.set_axes_info(
-            ax, [total_samples], chan_db_info=chan_db_info,
-            linked_ax=linked_ax)
+            ax, [total_samples], sample_no_colors=sample_no_colors,
+            chan_db_info=chan_db_info, linked_ax=linked_ax)
         if linked_ax is None:
             ax.x = x
         else:
@@ -168,6 +177,8 @@ class Plotting:
         ax.set_ylim(-2, 2)
         self.plotting_axes.set_axes_info(
             ax, [len(points_list[0]), len(points_list[1])],
+            sample_no_colors=[clr[colors[0]], clr[colors[1]]],
+            sample_no_pos=[0.25, 0.75],
             chan_db_info=chan_db_info, linked_ax=linked_ax)
         if linked_ax is None:
             ax.x = x
@@ -203,7 +214,8 @@ class Plotting:
         x_list = c_data['times']
         total_x = sum([len(x) for x in x_list])
         self.plotting_axes.set_axes_info(
-            ax, [total_x], chan_db_info=chan_db_info, linked_ax=linked_ax)
+            ax, [total_x], sample_no_colors=[clr[color]],
+            chan_db_info=chan_db_info, linked_ax=linked_ax)
 
         for x in x_list:
             ax.plot(x, [0] * len(x), marker='s', markersize=1.5,
@@ -250,10 +262,7 @@ class Plotting:
                 self.parent.plotting_bot, plot_h)
 
         x_list, y_list = c_data['times'], c_data['data']
-        total_x = sum([len(x) for x in x_list])
-        self.plotting_axes.set_axes_info(
-            ax, [total_x], chan_db_info=chan_db_info,
-            info=info, y_list=y_list, linked_ax=linked_ax)
+
         colors = {}
         if chan_db_info['valueColors'] not in [None, 'None', '']:
             color_parts = chan_db_info['valueColors'].split('|')
@@ -261,12 +270,27 @@ class Plotting:
                 obj, c = cStr.split(':')
                 colors[obj] = c
         l_color = 'G'
+        d_color = 'W'
         has_dot = False
         if 'L' in colors:
             l_color = colors['L']
         if 'D' in colors:
             d_color = colors['D']
             has_dot = True
+
+        if chan_id == 'GPS Lk/Unlk':
+            sample_no_list = []
+            sample_no_list.append(np.where(y_list[0] == -1)[0].size)
+            sample_no_list.append(np.where(y_list[0] == 1)[0].size)
+            sample_no_colors = [clr[d_color], clr[d_color]]
+        else:
+            sample_no_list = [sum([len(x) for x in x_list])]
+            sample_no_colors = [clr[d_color]]
+        self.plotting_axes.set_axes_info(
+            ax, sample_no_list, sample_no_colors=sample_no_colors,
+            chan_db_info=chan_db_info,
+            info=info, y_list=y_list, linked_ax=linked_ax)
+
         for x, y in zip(x_list, y_list):
             if not has_dot:
                 # set marker to be able to click point for info
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py b/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
index 940110dc3391f55ec682ff855975c427a9e40d01..508f96cd256e6277d51c23807a657c1c6a5f3da8 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
@@ -1,5 +1,7 @@
-from typing import List
+from typing import List, Optional, Dict
 
+import numpy as np
+from matplotlib.axes import Axes
 from matplotlib.patches import ConnectionPatch, Rectangle
 from matplotlib.ticker import AutoMinorLocator
 from matplotlib import pyplot as pl
@@ -10,6 +12,7 @@ from sohstationviewer.controller.plotting_data import (
     get_gaps, get_time_ticks, get_unit_bitweight)
 
 from sohstationviewer.conf import constants
+from sohstationviewer.view.util.color import clr
 
 
 class PlottingAxes:
@@ -148,24 +151,30 @@ class PlottingAxes:
         ax.patch.set_alpha(0)
         return ax
 
-    def set_axes_info(self, ax, sample_no_list,
-                      label=None, info='', y_list=None, chan_db_info=None,
-                      linked_ax=None):
+    def set_axes_info(self, ax: Axes,
+                      sample_no_list: List[int],
+                      sample_no_colors: List[str] = [clr['W'], clr['W']],
+                      sample_no_pos: List[float] = [0.05, 0.95],
+                      label: Optional[str] = None,
+                      info: str = '',
+                      y_list: Optional[np.ndarray] = None,
+                      chan_db_info: Optional[Dict] = None,
+                      linked_ax: Optional[Axes] = None):
         """
         Draw plot's title, sub title, sample total label, center line, y labels
         for a channel.
 
-        :param ax: matplotlib.axes.Axes - axes of a channel
-        :param sample_no_list: [int,] - list of totals of different sample
-            groups
-        :param label: str/None - title of the plot.
-            If None, show chan_db_info['label']
-        :param info: str - additional info to show in sub title which is
+        :param ax:  axes of a channel
+        :param sample_no_list: list of totals of different sample groups
+        :param sample_no_colors: list of color to display sample numbers
+        :param sample_no_pos: list of position to display sample numbers
+            top/bottom
+        :param label: title of the plot. If None, show chan_db_info['label']
+        :param info: additional info to show in sub title which is
             smaller and under title on the left side
-        :param y: numpy.array - y values of the channel, to show min/max labels
-            and min/max lines
-        :param chan_db_info: dict - info of channel from database
-        :param linked_ax: matplotlib.axes.Axes/None -
+        :param y: y values of the channel for min/max labels, min/max lines
+        :param chan_db_info: info of channel from database
+        :param linked_ax:
             if linked_ax is None, this is a main channel, label of channel will
                 be displayed with title's format, on top right of plot.
             if linked_ax is not None, this is a channel using main channel's
@@ -181,6 +190,7 @@ class PlottingAxes:
 
         if label is None:
             label = chan_db_info['label']
+
         title_ver_alignment = 'center'
         # set info in subtitle under title
         if linked_ax is not None:
@@ -223,7 +233,7 @@ class PlottingAxes:
                 verticalalignment='center',
                 rotation='horizontal',
                 transform=ax.transAxes,
-                color=self.parent.display_color['basic'],
+                color=sample_no_colors[0],
                 size=self.parent.font_size
             )
         else:
@@ -233,30 +243,31 @@ class PlottingAxes:
             # on data created in trim_downsample_chan_with_spr_less_or_equal_1
             # and won't be changed in set_lim, then don't need to assign a
             # variable for it.
-
             # bottom
             ax.text(
-                1.005, 0.25,
+                1.005, sample_no_pos[0],
                 sample_no_list[0],
                 horizontalalignment='left',
                 verticalalignment='center',
                 rotation='horizontal',
                 transform=ax.transAxes,
-                color=self.parent.display_color['basic'],
+                color=sample_no_colors[0],
                 size=self.parent.font_size
             )
             # top
             ax.text(
-                1.005, 0.75,
+                1.005, sample_no_pos[1],
                 sample_no_list[1],
                 horizontalalignment='left',
                 verticalalignment='center',
                 rotation='horizontal',
                 transform=ax.transAxes,
-                color=self.parent.display_color['basic'],
+                color=sample_no_colors[1],
                 size=self.parent.font_size
             )
-
+        if linked_ax is not None:
+            ax.set_yticks([])
+            return
         if y_list is None:
             # draw center line
             ax.plot([self.parent.min_x, self.parent.max_x],