xticks结束数字在x轴上的过早放置,即刻度不到达右端

时间:2013-07-07 14:04:20

标签: python python-2.7 matplotlib

我有一个简单的脚本来描绘TPR / SP的权衡。

它生成一个类似的pdf(注意x轴编号的位置):enter image description here

相关代码可能是:

xticks(range(len(SP_list)), [i/10.0 for i in range(len(SP_list))], size='small')

整个代码是:

SN_list = [0.89451476793248941, 0.83544303797468356, 0.77215189873417722, 0.70042194092827004, 0.63291139240506333, 0.57805907172995785, 0.5527426160337553, 0.5527426160337553, 0.53586497890295359, 0.52742616033755274, 0.50632911392405067, 0.48101265822784811, 0.45569620253164556, 0.43459915611814348, 0.40084388185654007, 0.3628691983122363, 0.31223628691983124, 0.25738396624472576, 0.20253164556962025, 0.12658227848101267, 0.054852320675105488, 0.012658227848101266]
SP_list = [0.24256292906178489, 0.24780976220275344, 0.25523012552301255, 0.25382262996941896, 0.25684931506849318, 0.36533333333333334, 0.4548611111111111, 0.51778656126482214, 0.54978354978354982, 0.59241706161137442, 0.63492063492063489, 0.80851063829787229, 0.81203007518796988, 0.85123966942148765, 0.88785046728971961, 0.91489361702127658, 0.9135802469135802, 0.9242424242424242, 0.94117647058823528, 0.967741935483871, 1.0, 1.0]

figure()

xlabel('Score cutoff point')

ylabel('Percent')

plot(SP_list)

plot(SN_list)

legend(('True Positive Rate', 'Specificity'), 'upper left', prop={"size":9}, shadow=False, fancybox=False)

grid(False)

xticks(range(len(SP_list)), [i/10.0 for i in range(len(SP_list))], size='small')

savefig('SP_SN.png')

3 个答案:

答案 0 :(得分:2)

您可以在autoscale()之后致电xticks(),这会自动设置新轴的限制。

enter image description here

答案 1 :(得分:1)

这正是你告诉它的。问题是默认刻度定位器与您使用xticks的交互不良。默认情况下,定位器会尝试设置一个范围,以便您提供良好的信息。打勾位置。如果您移除xticks行,则会看到它为您提供了[0, 25]的范围。当您使用xticks时,它会将给定字符串放在给定位置,但不会更改限制。您只需要通过添加

来设置限制
xlim([0, len(SP_list) - 1])

答案 2 :(得分:1)

由于某些我无法看到的原因,自动缩放不适用于你的情节......在这种情况下,你必须强制绘制阴谋的x尺度:

您可以尝试:

nticks = len(SP_list)
ticks = arange(nticks)
xticks(ticks, 0.1*ticks, size='small')
xlim(ticks.min(), ticks.max())
show()