这部分代码生成图 (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/