根据最大值自动设置图表比例(Python)

2 投票
6 回答
609 浏览
提问于 2025-04-17 09:36

我想要根据数据集中最大的值,自动设置折线图的垂直刻度。到目前为止,我想出了这个方法:

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

你可以把它简化得更简单:

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]

撰写回答