# Tutorial clarification

**URL:** https://mne.discourse.group/t/tutorial-clarification/11717
**Category:** Support & Discussions
**Created:** [February 28, 2026, 8:36am UTC](https://mne.discourse.group/t/tutorial-clarification/11717 "2026-02-28T08:36:22Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![1himan](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/1himan/32/4697_2.png) [@1himan](https://mne.discourse.group/u/1himan)
#### Post date: [February 28, 2026, 8:36am UTC](https://mne.discourse.group/t/tutorial-clarification/11717/1 "2026-02-28T08:36:22Z")

</div>

I was reading the introductory [Overview of MEG/EEG analysis with MNE-Python — MNE 1.11.0 documentation](https://mne.tools/stable/auto_tutorials/intro/10_overview.html#loading-data)  
tutorial.

But seems like this part is a bit quirky:

```python
raw.compute_psd(fmax=50).plot(picks="data", exclude="bads", amplitude=False)
raw.plot(duration=5, n_channels=30)

```

I have to add `block=True` in order to view the plot on `raw.plot` otherwise it’ll close as soon as it opens up.  
but `ica.plot_properties(raw, picks=ica.exclude)` doesn’t require that? Why? Is this a system design choice?

---

<div class="post-metadata">

### Author: ![tsbinns](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/tsbinns/32/4543_2.png) [@tsbinns](https://mne.discourse.group/u/tsbinns)
#### Post date: [February 28, 2026, 1:27pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/2 "2026-02-28T13:27:02Z")

</div>

Plotting tools with a `block` argument tend to be those which open browsing figures (those that you scroll through), e.g., `Epochs.plot`, `ICA.plot_sources`.

In contrast, those that produce more ‘static’ figures don’t have a `block` argument, e.g., `ICA.plot_properties`, `Spectrum.plot`. At least for me (and also seems for you), running these in a file effectively acts as if `block=True`.

Why the more static plotting doesn’t have a `block` param and why the default seems to be opposite of that for browsing figures, I’m not sure. Perhaps @larsoner knows?

---

<div class="post-metadata">

### Author: ![wmvanvliet](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/wmvanvliet/32/100_2.png) [@wmvanvliet](https://mne.discourse.group/u/wmvanvliet)
#### Post date: [February 28, 2026, 6:29pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/3 "2026-02-28T18:29:28Z")

</div>

Does `raw.plot()` open the `mne-qt-browser` window, while `ica.plot_properties()` opens a matplotlib figure? Two different plotting engines could explain the difference.

---

<div class="post-metadata">

### Author: ![tsbinns](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/tsbinns/32/4543_2.png) [@tsbinns](https://mne.discourse.group/u/tsbinns)
#### Post date: [February 28, 2026, 6:35pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/4 "2026-02-28T18:35:17Z")

</div>

I wondered this also, but I saw the same behaviour with `raw.plot` for both engines, and ultimately `block=False` by default regardless of engine choice.

---

<div class="post-metadata">

### Author: ![larsoner](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/larsoner/32/3_2.png) [@larsoner](https://mne.discourse.group/u/larsoner)
#### Post date: [March 2, 2026, 4:08pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/5 "2026-03-02T16:08:16Z")

</div>

> [@1himan](#):
>
> I have to add `block=True` in order to view the plot on `raw.plot` otherwise it’ll close as soon as it opens up.

Hmm this part is not good. If you do `fig = raw.plot(…)` does it stay up? The intended behavior is that it shows up but does not block execution.

If adding `fig = …` does fix it, it suggests it’s due to garbage collection – no ref to the figure is maintained so it gets GC’ed and closed. Plotting libraries usually take care of this by keeping a ref to all figures they’ve created in their own `_ALL_PLOTTERS` for example. We should probably implement this at the mne-qt-browser end if needed

---

<div class="post-metadata">

### Author: ![cbrnr](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/cbrnr/32/1409_2.png) [@cbrnr](https://mne.discourse.group/u/cbrnr)
#### Post date: [March 2, 2026, 5:42pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/6 "2026-03-02T17:42:44Z")

</div>

Does adding `plt.show()` at the end not work?

---

<div class="post-metadata">

### Author: ![tsbinns](https://yyz2.discourse-cdn.com/free1/user_avatar/mne.discourse.group/tsbinns/32/4543_2.png) [@tsbinns](https://mne.discourse.group/u/tsbinns)
#### Post date: [March 2, 2026, 8:29pm UTC](https://mne.discourse.group/t/tutorial-clarification/11717/7 "2026-03-02T20:29:57Z")

</div>

> If you do `fig = raw.plot(…)` does it stay up?

With `mne-qt-browser` engine, this doesn’t change the behaviour.

  

> Does adding `plt.show()` at the end not work?

Yes, for the `matplotlib` engine. I guess you could achieve similar for `mne-qt-browser` with

```python
app = QApplication.instance()
if app is not None:
    app.exec()

```

but it is more cumbersome.
