根据最大值自动设置图表比例(Python)
我想要根据数据集中最大的值,自动设置折线图的垂直刻度。到目前为止,我想出了这个方法:
if 0 < max and max <= 250:
ymax = 250
elif 250 < max and max <= 500:
ymax = 500
elif 500 < max and max <= 750:
ymax = 750
elif 750 < max and max <= 1000:
ymax = 1000
有没有人能推荐一个更简洁的方法呢?
6 个回答
0
请查看这个回答:如何为一系列数字确定正确的范围,以绘制折线图?
0
你可以把它简化得更简单:
if mymax < 250:
ymax = 250
elif mymax < 500:
ymax = 500
elif mymax < 750:
ymax = 750
else:
ymax = 1000
还有一种更通用的写法:
>>> mymax = 633
>>> limits = [250, 500, 750, 1000]
>>> for m in limits:
... if mymax < m:
... ymax = m
... break
...
>>> ymax
750
>>>
2
这是另一种不太直观的实现方式
def vScale(xmax):
return ((xmax-1)/250+1)*250
这是结果
[(x,vScale(x)) for x in xrange(0,1200,50)]
[(0, 0), (50, 250), (100, 250), (150, 250), (200, 250), (250, 250), (300, 500), (350, 500), (400, 500), (450, 500), (500, 500), (550, 750), (600, 750), (650, 750), (700, 750), (750, 750), (800, 1000), (850, 1000), (900, 1000), (950, 1000), (1000, 1000), (1050, 1250), (1100, 1250), (1150, 1250)]
还有另一种实现方式
limits=[0,250,500,750,1000]
ymax=limits[bisect.bisect_right(limits,xmax-1)]
再加一个到这个花束里
def vScale(xmax):
return [250,500,750,1000][(xmax-1)/250]