带表格格式的 Matplotlib 条形图

2024-05-18

我在图的底部添加了一个表格,但它存在许多问题:

  1. 右边的内边距太多了。
  2. 左边的填充太少。
  3. 底部没有填充物。
  4. 单元格对于其中的文本来说太小。
  5. 该表距离图的底部太近。
  6. 属于行名称的单元格的颜色未与条形图的颜色相匹配。

我要发疯了,去摆弄这个。有人可以帮我解决这些问题吗?

这是代码(Python 3):

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# Set styles
plt.style.use(['seaborn-paper', 'seaborn-whitegrid'])
plt.style.use(['seaborn'])
sns.set(palette='colorblind')
matplotlib.rc("font", family="Times New Roman", size=12)

labels = ['n=1','n=2','n=3','n=4','n=5']
a = [98.8,98.8,98.8,98.8,98.8]
b = [98.6,97.8,97.0,96.2,95.4]
bar_width = 0.20
data = [a,b]
print(data)
colors = plt.cm.BuPu(np.linspace(0, 0.5, len(labels)))
columns = ('n=1', 'n=2', 'n=3', 'n=4', 'n=5')

index = np.arange(len(labels))
plt.bar(index, a, bar_width)
plt.bar(index+bar_width+.02, b, bar_width)
plt.table(cellText=data,
          rowLabels=['a', 'b'],
          rowColours=colors,
          colLabels=columns,
          loc='bottom')

plt.subplots_adjust(bottom=0.7)

plt.ylabel('Some y label which effect the bottom padding!')
plt.xticks([])
plt.title('Some title')
plt.show()

这是输出:

Update

现在可以使用,但如果其他人遇到问题:请确保您没有查看您的绘图以及对它们所做的更改IntelliJ SciView因为它不能准确地表示更改并引入一些格式问题!


我认为你可以通过在使用表格制作表格时设置边界框来解决第一个问题bbox像这样:

bbox=[0, 0.225, 1, 0.2]

其中参数是[left, bottom, width, height].

对于第二个问题(着色),那是因为color数组不对应seaborn染色。您可以查询seaborn调色板与

sns.color_palette(palette='colorblind')

这会给你一个颜色列表seaborn正在使用。

检查以下修改:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# Set styles
plt.style.use(['seaborn-paper', 'seaborn-whitegrid'])
plt.style.use(['seaborn'])
sns.set(palette='colorblind')
matplotlib.rc("font", family="Times New Roman", size=12)

labels = ['n=1','n=2','n=3','n=4','n=5']
a = [98.8,98.8,98.8,98.8,98.8]
b = [98.6,97.8,97.0,96.2,95.4]
bar_width = 0.20
data = [a,b]

colors = sns.color_palette(palette='colorblind')
columns = ('n=1', 'n=2', 'n=3', 'n=4', 'n=5')

index = np.arange(len(labels))
fig = plt.figure(figsize=(12,9))
plt.bar(index, a, bar_width)
plt.bar(index+bar_width+.02, b, bar_width)
plt.table(cellText=data,
          rowLabels=[' a ', ' b '],
          rowColours=colors,
          colLabels=columns,
          loc='bottom',
          bbox=[0, 0.225, 1, 0.2])

fig.subplots_adjust(bottom=0.1)

plt.ylabel('Some y label which effect the bottom padding!')
plt.xticks([])
plt.title('Some title')
plt.show()

我还将子图调整更改为subplot_adjust(bottom=0.1)因为否则它就不会出来。这是输出:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带表格格式的 Matplotlib 条形图 的相关文章

随机推荐