gpt4 book ai didi

python - matplotlib 文本框中的表格文本

转载 作者:太空宇宙 更新时间:2023-11-03 20:35:56 25 4
gpt4 key购买 nike

我正在尝试以表格格式在 matplotlib 文本框中显示一些统计信息。

让文本框显示工作正常,并且使用字符串格式对齐操作数('>','<')使用打印语句将绘图外部的数据制表工作正常,但是一旦我将格式化的字符串包装在 ax.text( ),对齐似乎被忽略了。

例如:

import matplotlib.pyplot as plt
import numpy as np

def plot_histo(data, stats):
fig, ax = plt.subplots()
n, bins, patches = plt.hist(data, bins=16, alpha=0.5)
props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
ax.text(0.8, 0.85, stats, transform=ax.transAxes, bbox=props)
plt.show()

data = np.random.normal(size=100)
stats = '\n'.join([
'{:<8}{:>4}'.format('n:', len(data)),
'{:<8}{:>4.2f}'.format('Mean:', np.mean(data)),
'{:<8}{:>4.2f}'.format('SD:', np.std(data)),
])
plot_histo(data, stats)

像这样的情节

Histogram

但是,使用 print 语句:

print(stats)

输出所需的、对齐的表格格式。

n:       100
Mean: 0.01
SD: 0.95

关于如何在文本框中获取表格格式有什么想法吗?对于最终应用程序来说,使用等宽字体是不可取的。

最佳答案

我能想到的最好办法是将文本放在两个单独对齐的没有背景的框中,放在具有我想要的背景的空框上。不优雅,但有效。如果您更改格式,那真的很烦人。

def plot_histo(data):
fig, ax = plt.subplots()
n, bins, patches = plt.hist(data, bins=16, alpha=0.5)

# empty text box with background color
blanks = '\n'.join(['x'*10]*3)
props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
ax.text(0.8, 0.85, blanks, color='none', transform=ax.transAxes, bbox=props)

# overlay statistics with titles left-aligned and numbers right-aligned
stats_txt = '\n'.join(['n:', 'Mean:', 'SD:'])
stats = '\n'.join([
'{}'.format(len(data)),
'{:0.2f}'.format(np.mean(data)),
'{:0.2f}'.format(np.std(data))
])
props = dict(boxstyle='square', facecolor='none', edgecolor='none')
ax.text(0.8, 0.85, stats_txt, transform=ax.transAxes, bbox=props, ha='left')
ax.text(0.96, 0.85, stats, transform=ax.transAxes, bbox=props, ha='right')
plt.show()

Histo2

关于python - matplotlib 文本框中的表格文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com