【问题标题】:How to add text to seaborn distplot如何将文本添加到 seaborn distplot
【发布时间】:2019-11-15 11:26:23
【问题描述】:

我正在尝试添加一些文本,即在 seaborn distplot 中按字母顺序命名子图。

下面是我的代码的 sn-p。

import numpy as np
import matplotlib.pyplot as plt
import math, os, pdb
import seaborn as sns

def all_plots(rmsd_data, i, k):
    sns.distplot(rmsd_data, hist=False, kde=True, 
             bins=100, color=color_list[i],
             # hist_kws={'edgecolor':'black'},
             kde_kws={'linewidth': 2},
             label=titles[i], ax=ax[k],
             ax.text(0.02, 0.95, "({})".format(figure_alphabet[i]), transform=ax.transAxes, fontsize=11, fontweight='bold', va='top')
)

f, ax = plt.subplots(3, sharex=True, figsize=(10,10))
color_list = ["red", "green", "darkblue"]
for i in range(3):
    filename1=open(somefile)
    rmsd_all= np.loadtxt(filename1, dtype=float)
    rmsd_all = rmsd_all[:,0:]
    k=0
    for j in replica:
        all_plots(rmsd_all[:,j], i, k)
        k=k+1

f.text(0.5, 0.05, 'RMSD (Å)', ha='center', fontsize=12)
f.text(0.05, 0.5, "probability Density", va='center', rotation='vertical', fontsize=16)
f.subplots_adjust(hspace=0.25)
plt.ion()
plt.show()
plt.savefig()
plt.pause(5.0)
plt.show()

我已经尝试过 ax.text(),它给了我错误

ax[i].text(0.02, 0.95, "({})".format(figure_alphabet[i]), transform=ax[i].transAxes, fontsize=11, fontweight='bold', va='top')
^
SyntaxError: positional argument follows keyword argument

rmsd_all 看起来像这样

array([[1.        , 0.47835878, 0.47642503, 0.42507957, 0.49148079],
   [2.        , 0.61796997, 0.450252  , 0.3737451 , 0.53768188],
   [3.        , 0.67351597, 0.43173896, 0.6295222 , 0.54695088],
   [4.        , 0.52944587, 0.58706632, 0.5278477 , 0.55438694],
   [5.        , 0.55547007, 0.43153315, 0.54432041, 0.52586783]])

我想按字母顺序命名,如下图所示。这张图片只是例如我的情节看起来会有所不同。

【问题讨论】:

    标签: python python-3.x seaborn


    【解决方案1】:

    所以我想我必须回答我自己的问题。

    所以我不得不在 for 循环中写入 ax.text 而不是在 sns.distplot 中写入它并且它有效!!!!

    for i in range(3):
        filename1=open(somefile)
        rmsd_all= np.loadtxt(filename1, dtype=float)
        rmsd_all = rmsd_all[:,0:]         # Modify rmsd_all[-5000:,0:] to skip initial 15000 frames which are not equilibrated.
        # pdb.set_trace()
        k=0
        for j in replica:
            all_plots(rmsd_all[:,j], i, k)
            ax[i].text(0.02, 0.95, "({})".format(figure_alphabet[i]), transform=ax[i].transAxes, fontsize=11, fontweight='bold', va='top')
            k=k+1
    

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2019-01-17
      • 2016-08-05
      • 2020-09-27
      • 2021-11-26
      相关资源
      最近更新 更多