In my case, there seemed to be some problem in my notebook file where fig, ax = plt.subplots() would immediately return an empty plot visualization, after which plt.show() would do apparently nothing (no figure/plot). Since my check of plt.isinteractive() returned True, I did the following and got a plot after plt.show():
plt.ioff() #turn off updating of plots after every plotting command
fig, ax = plt.subplots()
...
...
...
plt.ion() #re-enable interactive mode
plt.show()
I don't know why this helps, and frankly, I shouldn't have to do it if I really want to see an updated plot after each plotting command. But it does get plt.show() to actually show something within the VS Code notebook.
Edit:
I found also that if I have fig, ax = plt.subplots() and ax.plot(...) within same cell, the plot shows below the cell with no explicit plt.show() being necessary. With subplots() and plot() commands in different cells, I have not found a way to make the plot show except by explicitly calling plt.show() with interactive mode turned off then on, as I've shown above. And even this works only the first time cell with plt.show() is executed. Immediately rerunning the cell results in no plot shown.