为了账号安全,请及时绑定邮箱和手机立即绑定

Matplotlib 创建具有与系列相对应的颜色的文本

Matplotlib 创建具有与系列相对应的颜色的文本

BIG阳 2021-08-17 18:43:25
我正在尝试为不同的系列创建一个具有不同颜色的图。当我尝试将图中的数据作为文本框添加时出现了问题。我使用的代码如下:import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport numpy as npimport scipy.stats as statsdf = pd.DataFrame({'x': [21000, 16900, 18200, 32000, 35000, 7500], 'y':[3000, 2100, 1500, 3000, 2500, 2000], 'z':['a', 'b', 'c', 'd', 'e', 'f']})fig, ax = plt.subplots(figsize=(8,6))text_list = []color_list = []for i, row in df.iterrows():    mu, sigma, group = row['x'], row['y'], row['z']           x = np.linspace(mu - 4*sigma, mu + 4*sigma, 100)    sns.lineplot(x, stats.norm.pdf(x, mu, sigma), ax=ax)    color = ax.get_lines()[-1].get_c()    ax = plt.gca()    ax.text(mu*1.05, max(stats.norm.pdf(x, mu, sigma)), group, fontsize=16, color=color) #only retrieve RGB so blank text is not too light          text = r'{0}: {1} $\pm$ {2}'.format(group, mu, sigma)    text_list.append(text)    color_list.append(color)plt.gcf().text(0.68, 0.6, '\n'.join(text_list), bbox=dict(facecolor='white', edgecolor='black', pad=10.0, alpha=1), fontsize=14)fig.show()产生下图:bbox 内的文字都是黑色的。理想情况下,文本框中的每一行都应具有与图中相应系列相同的颜色。我能够在 text_box_content 和 color_list 中保存两个文本和颜色列表。我还尝试plt.gcf().text()在 for 循环中添加动态更新的文本位置,但为每一行创建边界框,而不是为所有文本创建整体边界框。如果在概念上有类似的东西会更好plt.gcf().text(zip(text_list, color_list)) 所以每条线都可以有自己的颜色?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信