我在python 3.2中创建了一个简单的单词频率计算器。现在我想创建一个可视化结果的图。 x轴将包含频率结果,我想将最频繁的单词添加到y轴。如何在pylab轴上添加文本而不是数字?提前谢谢!
答案 0 :(得分:9)
我将假设,因为你想要显示频率 x轴而不是y轴,你想要一个水平条形图。
调整要在x轴上打印的标签只需要您
使用xticks
命令:
import matplotlib.pyplot as plt
import numpy as np
x_values = [0.1, 0.3, 0.4, 0.2]
y_values = ["word 1", "word 2", "word 3", "word 4"]
y_axis = np.arange(1, 5, 1)
plt.barh(y_axis, x_values, align='center')
plt.yticks(y_axis, y_values)
plt.show()
这将产生以下图表(但可能有更好的方法 这不需要你摆弄间距,在哪里显示y标签)。
实际上更多地考虑它 - 我认为以下内容更像你的想法(我想我现在应该停止,因为它不可避免地表明我使用matplotlib可笑地缺乏经验):
import matplotlib.pyplot as plt
import numpy as np
y_values = [0.1, 0.3, 0.4, 0.2]
text_values = ["word 1", "word 2", "word 3", "word 4"]
x_values = np.arange(1, len(text_values) + 1, 1)
plt.bar(x_values, y_values, align='center')
# Decide which ticks to replace.
new_ticks = ["word for " + str(y) if y != 0.3 else str(y) for y in y_values]
plt.yticks(y_values, new_ticks)
plt.xticks(x_values, text_values)
plt.show()
答案 1 :(得分:0)
我使用了以下行;
axis.set_yticklabels(['{:,.0f} $'.format(i) for i in np.arange(0, 350, 50)])
它可以工作,但会引发 UserWarning
FixedFormatter should only be used together with FixedLocator
我找不到任何令人满意的解决方案,所以我只是添加了一个警告忽略过滤器
import warnings
warnings.filterwarnings('ignore')
这也可以,但警告仍然存在;
# An array of the values displayed on the y-axis (150, 175, 200, etc.)
ticks = axis.get_yticks()
# Format those values into strings beginning with dollar sign
new_labels = ['${}'.format(int(amt)) for amt in ticks]
# Set the new labels
axis.set_yticklabels(new_labels)