From e732acdcdc4302bab766206f80b2cf09fdefe768 Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Wed, 24 Jun 2026 14:03:04 -0500 Subject: [PATCH 1/7] Moved mplplot() code into if statement Moved all matpllotlib code in the mplplot() function into the if statement controlled by the hidden= parameter. This fixes the issues that hidden=True does not prevent plots from appearing in Jupyter notebooks. --- src/nmrsim/plt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/nmrsim/plt.py b/src/nmrsim/plt.py index db02c10..a0f3dd4 100644 --- a/src/nmrsim/plt.py +++ b/src/nmrsim/plt.py @@ -70,13 +70,13 @@ def mplplot(peaklist, w=1, y_min=-0.01, y_max=1, points=800, limits=None, hidden l_limit = peaklist[0][0] - 50 r_limit = peaklist[-1][0] + 50 x = np.linspace(l_limit, r_limit, points) - plt.ylim(y_min, y_max) - plt.gca().invert_xaxis() # reverses the x axis y = add_lorentzians(x, peaklist, w) # noinspection PyTypeChecker - lines = plt.plot(x, y) print(lines) if not hidden: + lines = plt.plot(x, y) + plt.ylim(y_min, y_max) + plt.gca().invert_xaxis() # reverses the x axis plt.show() return x, y From 546df03f72b07ada6e33277f0a0547e426765640 Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 13:07:04 -0500 Subject: [PATCH 2/7] Move plot code into if not hidden Moved all matplotlib code into the if not hidden condition so that the plot doesn't show in a Jupyter notebook when hidden=True. This fixes an issue that the user cannot turn of plotting in the mplplot() function to use their own plotting library. Removed the deprecated and removed use_line_collection= argument from the plt.stem() function. --- .gitignore | 3 ++- src/nmrsim/plt.py | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 265d444..2bd1e98 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,5 @@ docs/build docs/source/_build/ .tox .DS_Store -.coverage* \ No newline at end of file +.coverage* +*.ini \ No newline at end of file diff --git a/src/nmrsim/plt.py b/src/nmrsim/plt.py index a0f3dd4..1388faa 100644 --- a/src/nmrsim/plt.py +++ b/src/nmrsim/plt.py @@ -72,9 +72,9 @@ def mplplot(peaklist, w=1, y_min=-0.01, y_max=1, points=800, limits=None, hidden x = np.linspace(l_limit, r_limit, points) y = add_lorentzians(x, peaklist, w) # noinspection PyTypeChecker - print(lines) if not hidden: lines = plt.plot(x, y) + print(lines) plt.ylim(y_min, y_max) plt.gca().invert_xaxis() # reverses the x axis plt.show() @@ -115,10 +115,11 @@ def mplplot_stick(peaklist, y_min=-0.01, y_max=1, limits=None, hidden=False): # baseline. x = np.append(x, [l_limit, r_limit]) y = np.append(y, [0.001, 0.001]) - plt.xlim(r_limit, l_limit) - plt.ylim(y_min, y_max) - ax.stem(x, y, markerfmt=" ", basefmt="C0-", use_line_collection=True) # suppress warning until mpl 3.3 if not hidden: + plt.xlim(r_limit, l_limit) + plt.ylim(y_min, y_max) + # suppress warning until mpl 3.3 + ax.stem(x, y, markerfmt=" ", basefmt="C0-") plt.show() return x, y # TODO: or return plt object? Decide behavior. From fa2ef1dd61a32179ff1229dedf110ad200326bc3 Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 15:51:31 -0500 Subject: [PATCH 3/7] Update .gitignore Updated .gitignore with *i.ni and *.bak. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2bd1e98..3f518f9 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ docs/source/_build/ .tox .DS_Store .coverage* -*.ini \ No newline at end of file +*.ini +*.bak \ No newline at end of file From c96a9a384416e78cacc28bb6d8d7eb2ac958f57b Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 15:53:12 -0500 Subject: [PATCH 4/7] Update qm_explanation IPython import Updated the qm_explanation.ipynb notebooks (both) imports by changing from IPython.core.display to IPython.display. --- docs/source/jupyter/qm_explanation.ipynb | 4 +- jupyter/qm_explanation.ipynb | 144 ++++++++++++++++++----- 2 files changed, 118 insertions(+), 30 deletions(-) diff --git a/docs/source/jupyter/qm_explanation.ipynb b/docs/source/jupyter/qm_explanation.ipynb index c40d35b..39a5a79 100644 --- a/docs/source/jupyter/qm_explanation.ipynb +++ b/docs/source/jupyter/qm_explanation.ipynb @@ -41,7 +41,7 @@ "metadata": {}, "outputs": [], "source": [ - "from IPython.core.display import display, HTML\n", + "from IPython.display import display, HTML\n", "display(HTML(\"\"))" ] }, @@ -489,7 +489,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.13.2" } }, "nbformat": 4, diff --git a/jupyter/qm_explanation.ipynb b/jupyter/qm_explanation.ipynb index c40d35b..7508b8a 100644 --- a/jupyter/qm_explanation.ipynb +++ b/jupyter/qm_explanation.ipynb @@ -37,17 +37,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "from IPython.core.display import display, HTML\n", + "from IPython.display import display, HTML\n", "display(HTML(\"\"))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -170,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -242,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -263,9 +263,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 15.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],\n", + " [ 0.+0.j, -5.+0.j, 0.+0.j, 0.+0.j],\n", + " [ 0.+0.j, 0.+0.j, 5.+0.j, 0.+0.j],\n", + " [ 0.+0.j, 0.+0.j, 0.+0.j, -15.+0.j]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Lz = L[2] # array of Lz operators\n", "H = np.tensordot(v, Lz, axes=1)\n", @@ -288,9 +302,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 16.25+0.j, 0. +0.j, 0. +0.j, 0. +0.j],\n", + " [ 0. +0.j, -6.25+0.j, 2.5 +0.j, 0. +0.j],\n", + " [ 0. +0.j, 2.5 +0.j, 3.75+0.j, 0. +0.j],\n", + " [ 0. +0.j, 0. +0.j, 0. +0.j, -13.75+0.j]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "J = np.array(J) # convert to numpy array first\n", "scalars = 0.5 * J\n", @@ -351,9 +379,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 1., 0.],\n", + " [1., 0., 0., 1.],\n", + " [1., 0., 0., 1.],\n", + " [0., 1., 1., 0.]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# function was optimized by only calculating upper triangle and then adding\n", "# the lower.\n", @@ -419,9 +461,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6.90983006, 0.5527864 ],\n", + " [18.09016994, 1.4472136 ],\n", + " [23.09016994, 0.5527864 ],\n", + " [11.90983006, 1.4472136 ]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "E, V = np.linalg.eigh(H)\n", "V = V.real\n", @@ -445,9 +501,23 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(np.float64(6.9098300562505255), np.float64(0.276393202250021)),\n", + " (np.float64(18.090169943749473), np.float64(0.7236067977499789)),\n", + " (np.float64(23.090169943749473), np.float64(0.276393202250021)),\n", + " (np.float64(11.909830056250527), np.float64(0.7236067977499789))]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from nmrsim.math import normalize_peaklist\n", "normalized_plist = normalize_peaklist(peaklist, 2)\n", @@ -456,7 +526,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -465,9 +535,27 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMK1JREFUeJzt3Qt4VNW99/F/7iFAwiWSQIgEFUVeEJBbwUtfT6n41Nra9niorUI5rVarFuH0EagK5diK1Wp5TkURKtX3VAvVttYLhUexaK2xFNB64yq3CCQEJBcCuc/7rDWzJnsmkzAz2cPKzHw/55kzmduePbuY+eW//mvtFI/H4xEAAABLUm29MQAAgEIYAQAAVhFGAACAVYQRAABgFWEEAABYRRgBAABWEUYAAIBVhBEAAGAVYQQAAFhFGAEAAPEVRt5880255pprZNCgQZKSkiIvvPDCaV+zceNGufjiiyUrK0vOO+88eeqpp6LdXwAAkOxhpK6uTkaPHi3Lli0L6/l79+6Vq6++Wq644gp577335M4775Tvfe97sn79+mj2FwAAJJiUrpwoT1VG/vSnP8m1117b4XPmzZsnr7zyinz44Yf++775zW9KVVWVrFu3Ltq3BgAACSI91m9QWloqU6dODbhv2rRpukLSkYaGBn0xWltb5bPPPpP+/fvrAAQAALo/Ve+ora3VrR2pqan2wkh5ebkUFBQE3Kdu19TUyKlTp6RHjx7tXrNkyRJZvHhxrHcNAACcAWVlZTJ48GB7YSQaCxYskLlz5/pvV1dXy9lnn60/TG5urtV9AwAA4VGFh+LiYundu3enz4t5GCksLJSKioqA+9RtFSpCVUUUNetGXYKp1xBGAACIL6drsYj5OiOTJ0+WDRs2BNz36quv6vsBAAAiDiMnTpzQU3TVxUzdVT8fOHDAP8QyY8YM//NvueUW2bNnj9x1112yfft2eeyxx+T3v/+9zJkzx83PAQAAkiWMbN68WcaOHasviurtUD8vXLhQ3z58+LA/mChDhw7VU3tVNUStT/Lwww/Lr3/9az2jBgAAoEvrjJzJBpi8vDzdyErPCAAA8SHc72/OTQMAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAgPgLI8uWLZOSkhLJzs6WSZMmyaZNmzp9/tKlS+WCCy6QHj16SHFxscyZM0fq6+uj3WcAAJDMYWTNmjUyd+5cWbRokWzdulVGjx4t06ZNkyNHjoR8/rPPPivz58/Xz9+2bZs8+eSTehs//vGP3dh/AACQbGHkkUcekZtuuklmzZolI0aMkOXLl0tOTo6sWrUq5PPffvttueSSS+Rb3/qWrqZceeWVcv3115+2mgIAAJJDRGGksbFRtmzZIlOnTm3bQGqqvl1aWhryNVOmTNGvMeFjz549snbtWvnSl77U4fs0NDRITU1NwAUAACSm9EiefPToUWlpaZGCgoKA+9Xt7du3h3yNqoio11166aXi8XikublZbrnllk6HaZYsWSKLFy+OZNcAAECcivlsmo0bN8r9998vjz32mO4x+eMf/yivvPKK3HfffR2+ZsGCBVJdXe2/lJWVxXo3AQBAPFRG8vPzJS0tTSoqKgLuV7cLCwtDvubee++VG2+8Ub73ve/p26NGjZK6ujq5+eab5e6779bDPMGysrL0BQAAJL6IKiOZmZkybtw42bBhg/++1tZWfXvy5MkhX3Py5Ml2gUMFGkUN2wAAgOQWUWVEUdN6Z86cKePHj5eJEyfqNURUpUPNrlFmzJghRUVFuu9Dueaaa/QMnLFjx+o1SXbv3q2rJep+E0oAAEDyijiMTJ8+XSorK2XhwoVSXl4uY8aMkXXr1vmbWg8cOBBQCbnnnnskJSVFXx88eFDOOussHUR+9rOfuftJAABAXErxxMFYiZram5eXp5tZc3Nzbe8OAABw8fubc9MAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAACD+wsiyZcukpKREsrOzZdKkSbJp06ZOn19VVSW33XabDBw4ULKysuT888+XtWvXRrvPAAAggaRH+oI1a9bI3LlzZfny5TqILF26VKZNmyY7duyQAQMGtHt+Y2OjfPGLX9SPPf/881JUVCT79++XPn36uPUZAABAHEvxeDyeSF6gAsiECRPk0Ucf1bdbW1uluLhY7rjjDpk/f36756vQ8tBDD8n27dslIyMjqp2sqamRvLw8qa6ultzc3Ki2AQAAzqxwv78jGqZRVY4tW7bI1KlT2zaQmqpvl5aWhnzNiy++KJMnT9bDNAUFBTJy5Ei5//77paWlpcP3aWho0B/AeQEAAIkpojBy9OhRHSJUqHBSt8vLy0O+Zs+ePXp4Rr1O9Ynce++98vDDD8tPf/rTDt9nyZIlOkmZi6q8AACAxBTz2TRqGEf1i6xYsULGjRsn06dPl7vvvlsP33RkwYIFuqRjLmVlZbHeTQAAEA8NrPn5+ZKWliYVFRUB96vbhYWFIV+jZtCoXhH1OuPCCy/UlRQ17JOZmdnuNWrGjboAAIDEF1FlRAUHVd3YsGFDQOVD3VZ9IaFccsklsnv3bv08Y+fOnTqkhAoiAAAguUQ8TKOm9a5cuVKefvpp2bZtm9x6661SV1cns2bN0o/PmDFDD7MY6vHPPvtMZs+erUPIK6+8ohtYVUMrAABAxOuMqJ6PyspKWbhwoR5qGTNmjKxbt87f1HrgwAE9w8ZQzafr16+XOXPmyEUXXaTXGVHBZN68ee5+EgAAkBzrjNjAOiMAAMSfmKwzAgAA4DbCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAA4i+MLFu2TEpKSiQ7O1smTZokmzZtCut1q1evlpSUFLn22mujeVsAAJCAIg4ja9askblz58qiRYtk69atMnr0aJk2bZocOXKk09ft27dPfvSjH8lll13Wlf0FAADJHkYeeeQRuemmm2TWrFkyYsQIWb58ueTk5MiqVas6fE1LS4t8+9vflsWLF8s555xz2vdoaGiQmpqagAsAAEhMEYWRxsZG2bJli0ydOrVtA6mp+nZpaWmHr/vv//5vGTBggHz3u98N632WLFkieXl5/ktxcXEkuwkAABI1jBw9elRXOQoKCgLuV7fLy8tDvuatt96SJ598UlauXBn2+yxYsECqq6v9l7Kyskh2EwAAxJH0WG68trZWbrzxRh1E8vPzw35dVlaWvgAAgMQXURhRgSItLU0qKioC7le3CwsL2z3/k08+0Y2r11xzjf++1tZW7xunp8uOHTvk3HPPjX7vAQBAcg3TZGZmyrhx42TDhg0B4ULdnjx5crvnDx8+XD744AN57733/JevfOUrcsUVV+if6QUBAAARD9Ooab0zZ86U8ePHy8SJE2Xp0qVSV1enZ9coM2bMkKKiIt2EqtYhGTlyZMDr+/Tpo6+D7wcAAMkp4jAyffp0qayslIULF+qm1TFjxsi6dev8Ta0HDhzQM2wAAADCkeLxeDzSzal1RtQU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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "mplplot(normalized_plist);" ] @@ -489,7 +577,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.13.2" } }, "nbformat": 4, From 89b5c6cd0b050ade9a4314456a4e961f7d600c28 Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 15:54:42 -0500 Subject: [PATCH 5/7] Make flake8 ignore .ipynb_checkpoints files Added .ipynb_checkpoints to the exclude list for flake8 in the setup.cfg file. --- setup.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 33569a5..04e4339 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,7 +69,8 @@ exclude = jupyter, tests/dnmr_standards.py, build, - dist + dist, + .ipynb_checkpoints ignore = # allowing I for Intensity/Integration *for now* E741 From 20ce8a4e77696a5606e11fab70756d0449aab1d6 Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 15:59:17 -0500 Subject: [PATCH 6/7] Update conf.py file to remove sprinxcontrib.napoleon The sphinxcontrib-napoleon package breaks in newer version of Python. Updated conf.py to use the version that comes with Sphinx. --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 6e101a3..d722f59 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -48,7 +48,7 @@ "sphinx.ext.coverage", "sphinx.ext.mathjax", # imgmath requires some helpers to be installed "sphinx.ext.viewcode", - "sphinxcontrib.napoleon", + "sphinx.ext.napoleon", "nbsphinx", ] From 839ebebd9bc9e1775b6fde12dab20efc65a6b4bb Mon Sep 17 00:00:00 2001 From: Charles Weiss <69219836+weisscharlesj@users.noreply.github.com> Date: Sat, 27 Jun 2026 16:07:59 -0500 Subject: [PATCH 7/7] Move all plotting code into if not hidden Moved the rest of the plotting code inside the if not hidden conditions in mplplot(), mplplot_stick(), and mplplot_lineshape() functions. Removed print(lines) debugging code and removed the note about suppressing a warning until matplotlib 3.3 because this is now updated in the code. --- src/nmrsim/plt.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/nmrsim/plt.py b/src/nmrsim/plt.py index 1388faa..0704c27 100644 --- a/src/nmrsim/plt.py +++ b/src/nmrsim/plt.py @@ -73,8 +73,7 @@ def mplplot(peaklist, w=1, y_min=-0.01, y_max=1, points=800, limits=None, hidden y = add_lorentzians(x, peaklist, w) # noinspection PyTypeChecker if not hidden: - lines = plt.plot(x, y) - print(lines) + plt.plot(x, y) plt.ylim(y_min, y_max) plt.gca().invert_xaxis() # reverses the x axis plt.show() @@ -102,7 +101,6 @@ def mplplot_stick(peaklist, y_min=-0.01, y_max=1, limits=None, hidden=False): numpy.array, numpy.array The arrays of x and y coordinates used for the plot. """ - fig, ax = plt.subplots() if limits: l_limit, r_limit = low_high(limits) else: @@ -116,9 +114,9 @@ def mplplot_stick(peaklist, y_min=-0.01, y_max=1, limits=None, hidden=False): x = np.append(x, [l_limit, r_limit]) y = np.append(y, [0.001, 0.001]) if not hidden: + fig, ax = plt.subplots() plt.xlim(r_limit, l_limit) plt.ylim(y_min, y_max) - # suppress warning until mpl 3.3 ax.stem(x, y, markerfmt=" ", basefmt="C0-") plt.show() return x, y @@ -160,9 +158,9 @@ def mplplot_lineshape(x, y, y_min=None, y_max=None, limits=None, hidden=False): y_min = min(y) - margin if y_max is None: y_max = max(y) + margin - plt.xlim(r_limit, l_limit) # should invert x axis - plt.ylim(y_min, y_max) - plt.plot(x, y) if not hidden: + plt.xlim(r_limit, l_limit) # should invert x axis + plt.ylim(y_min, y_max) + plt.plot(x, y) plt.show() return x, y