diff --git a/src/plot.cpp b/src/plot.cpp
--- a/src/plot.cpp
+++ b/src/plot.cpp
@@ -73,6 +73,16 @@ Plot::Plot(QWidget* parent) :
     demoIndicator.setText(demoText);
     demoIndicator.hide();
     demoIndicator.attach(this);
+
+    // init no channels are visible indicator
+    QwtText noChannelText(" No Visible Channels ");
+    noChannelText.setColor(QColor("white"));
+    noChannelText.setBackgroundBrush(Qt::darkBlue);
+    noChannelText.setBorderRadius(4);
+    noChannelText.setRenderFlags(Qt::AlignHCenter | Qt::AlignVCenter);
+    noChannelIndicator.setText(noChannelText);
+    noChannelIndicator.hide();
+    noChannelIndicator.attach(this);
 }
 
 Plot::~Plot()
@@ -163,6 +173,12 @@ void Plot::showDemoIndicator(bool show)
     replot();
 }
 
+void Plot::showNoChannel(bool show)
+{
+    noChannelIndicator.setVisible(show);
+    replot();
+}
+
 void Plot::unzoom()
 {
     zoomer.zoom(0);
diff --git a/src/plot.h b/src/plot.h
--- a/src/plot.h
+++ b/src/plot.h
@@ -57,6 +57,7 @@ public slots:
     void showMinorGrid(bool show = true);
     void showLegend(bool show = true);
     void showDemoIndicator(bool show = true);
+    void showNoChannel(bool show = true);
     void unzoom();
     void darkBackground(bool enabled = true);
     void setYAxis(bool autoScaled, double yMin = 0, double yMax = 1);
@@ -88,6 +89,7 @@ private:
     PlotSnapshotOverlay* snapshotOverlay;
     QwtPlotLegendItem legend;
     QwtPlotTextLabel demoIndicator;
+    QwtPlotTextLabel noChannelIndicator;
     ShowSymbols showSymbols;
 
     void resetAxes();
diff --git a/src/plotmanager.cpp b/src/plotmanager.cpp
--- a/src/plotmanager.cpp
+++ b/src/plotmanager.cpp
@@ -17,6 +17,7 @@
   along with serialplot.  If not, see .
 */
 
+#include 
 #include 
 #include 
 #include 
@@ -46,6 +47,7 @@ PlotManager::PlotManager(QWidget* plotAr
     _infoModel = infoModel;
     _numOfSamples = 1;
     showSymbols = Plot::ShowSymbolsAuto;
+    emptyPlot = NULL;
 
     // initalize layout and single widget
     isMulti = false;
@@ -156,6 +158,7 @@ PlotManager::~PlotManager()
     }
 
     if (scrollArea != NULL) delete scrollArea;
+    if (emptyPlot != NULL) delete emptyPlot;
 }
 
 void PlotManager::onChannelInfoChanged(const QModelIndex &topLeft,
@@ -189,6 +192,8 @@ void PlotManager::onChannelInfoChanged(c
         }
     }
 
+    checkNoVisChannels();
+
     // replot single widget
     if (!isMulti)
     {
@@ -198,6 +203,20 @@ void PlotManager::onChannelInfoChanged(c
     }
 }
 
+void PlotManager::checkNoVisChannels()
+{
+    // if all channels are hidden show indicator
+    bool allhidden = std::none_of(curves.cbegin(), curves.cend(),
+                                  [](QwtPlotCurve* c) {return c->isVisible();});
+
+    plotWidgets[0]->showNoChannel(allhidden);
+    if (isMulti)
+    {
+        plotWidgets[0]->showNoChannel(allhidden);
+        plotWidgets[0]->setVisible(true);
+    }
+}
+
 void PlotManager::setMulti(bool enabled)
 {
     if (enabled == isMulti) return;
@@ -240,6 +259,8 @@ void PlotManager::setMulti(bool enabled)
             curve->attach(plot);
         }
     }
+
+    checkNoVisChannels();
 }
 
 void PlotManager::setupLayout(bool multiPlot)
diff --git a/src/plotmanager.h b/src/plotmanager.h
--- a/src/plotmanager.h
+++ b/src/plotmanager.h
@@ -96,6 +96,7 @@ private:
     QScrollArea* scrollArea;
     QList curves;
     QList plotWidgets;
+    Plot* emptyPlot;  ///< for displaying when all channels are hidden
     ChannelInfoModel* _infoModel;
     bool isDemoShown;
     bool _autoScaled;
@@ -128,6 +129,8 @@ private:
     /// Common part of overloaded `addCurve` functions
     void _addCurve(QwtPlotCurve* curve);
     void setSymbols(Plot::ShowSymbols shown);
+    /// Check and make sure "no visible channels" text is shown
+    void checkNoVisChannels();
 
 private slots:
     void showGrid(bool show = true);