这部分代码生成图 (1) 中的条形图。我想知道如何修改它以生成图 (2) 中更具可读性的条形图。

axs[4].set_xticks(range(N))
axs[4].set_xticklabels(words[inds],rotation = 'vertical')
axs[4].set_xlabel('word')
axs[4].set_yscale('log')
axs[4].set_ylabel('pagerank')
axs[4].set_title('Sorted PageRank biased by total word frequencies (c = '+str(c4)+')')
axs[4].bar(range(N),p4[inds],lw=2.5, align='center')

plt.subplots_adjust(hspace=.5)

plt.savefig('./figures/pageranks.pdf')

最佳答案

您可以定义自己的函数,并使用 plt.hlines 绘制水平线。如果您想在某个轴上绘制它,只需将此轴作为 ax 参数的参数提供。

import matplotlib.pyplot as plt
import numpy as np

def bar_tops(x, y, width=0.8, align='center', ax=None, **kwargs):
    x = np.array(x)
    y = np.array(y)
    if align == 'center':
        left = x - 0.5 * width
        right = x + 0.5 * width
    elif align == 'edge':
        left = x
        right = x + width
    if ax == None:
        ax = plt.gca()
    ax.hlines(y, left, right, **kwargs)

用法示例:
bar_tops(np.arange(10), np.sort(np.random.rand(10)), lw=2)
plt.show()

关于python - Matplotlib 栏自定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18681301/

10-14 19:50