我无法使用matplotlib.pyplot
指定x轴的值。
在某些图像中,chart.xticks(years)
解决了问题,但似乎当x轴值的集合太小时,它会使用默认值,如[0,1,2,... 。,N]。
有效的案例:
不起作用的案例:
我的代码:
import matplotlib.pyplot as chart
from matplotlib import lines
# Settings
chart.title(file_name)
chart.xlabel('Years')
chart.ylabel('Committers/Contributions')
chart.ylim([0,highest_value + 100])
chart.xlim(first_year,2017)
# Values
committer_line = chart.plot(committers_dict.keys(),committers_dict.values(),'r',label='Committer')
contribution_line = chart.plot(contributions_dict.keys(),contributions_dict.values(),'b--',label='Contribution')
years = list(range(first_year,2017))
chart.xticks(years)
# Legend
chart.legend()
# Show/Save
chart.savefig(images_path + file_name.replace('.txt','-commiter-contribution.eps'), format='eps')
chart.show()
答案 0 :(得分:1)
Matplotlib正在使用正确的数字,但是用科学记数法表示,因为在x轴上没有更多空间来放置更多东西。也就是说,您可以直接与x轴交互,并使用旋转值在什么位置说明您想要的字符串。以下示例(数据随机化):
group = {}
words = ['mom', 'dad', 'aaa', 'bob', 'ccc', 'xyz', 'abc']
for w in words:
h = eq_hash(w)
group[h] = group.get(h, []) + [w]
print group.values()
# [['xyz', 'abc'], ['mom', 'dad', 'bob'], ['aaa', 'ccc']]
,结果:
,这有点混乱所以给你一个步骤"标签代码"范围:
import matplotlib.pyplot as chart
from matplotlib import lines
import random
title = 'Title'
first_year = 1960
last_year = 2017
x = [year for year in range(first_year,2017)]
y1 = [random.randint(0,10) for year in range(first_year,2017)]
y2 = [random.randint(0,10) for year in range(first_year,2017)]
highest_value = max(y1+y2)
# Settings
chart.title(title)
chart.xlabel('Years')
chart.ylabel('Committers/Contributions')
chart.ylim([0,highest_value + 0.05*highest_value])
chart.xlim(first_year,last_year)
# Values
committer_line = chart.plot(x,y1,'r',label='Committer')
contribution_line = chart.plot(x,y2,'b--',label='Contribution')
years = list(range(first_year,last_year))
years_str = [str(i) for i in range(first_year,last_year)]
chart.xticks(years,years_str,rotation=45)
# Legend
chart.legend()
# Show/Save
#chart.savefig(images_path + file_name.replace('.txt','-commiter-contribution.eps'), format='eps')
chart.show()
,将缓解x轴信息:
答案 1 :(得分:1)
如果您查看右下角,您会看到matplotlib只是更改了xtick标签的显示,以使用科学记数法来节省空间。要更改此设置,您需要更改刻度标签var data = { objectId: 1 };
$http({
method: 'POST',
url: myUrl,
data: data
}).success(function() {
//stuff
});
。
要禁用此转换为科学计数法,您可以调整默认格式化程序:
Formatter
这会编辑the useOffset
parameter of your ScalarFormatter
。
如果您希望默认禁用此行为,则可以编辑ax.get_xaxis().get_major_formatter().set_useOffset(False)
rcparam。