如何调整PIL绘制LCD图表时Y坐标的计算方向?
反转Y坐标计算逻辑的方法
问题核心是屏幕Y轴方向(0在顶部,向下数值递增)和图表预期的Y轴方向(数值越大越靠上)相反,只需调整比例的计算方向即可,以下是两种简单的修改方式:
方法一:反转比例的应用方向
保持原比例计算逻辑不变,用图表区域的底部Y值减去比例对应的像素距离:
start_y = 10 # 距屏幕顶部10像素 end_y = 60 # 距屏幕顶部60像素 min_val = 10 # 建议改名,避免和Python内置min函数冲突 max_val = 25 percentage_within_range = (value - min_val) / (max_val - min_val) # 反转计算:用end_y减去比例对应的高度,得到向上的坐标 y = end_y - (percentage_within_range * (end_y - start_y))
验证示例:当value=19时,percentage_within_range=(19-10)/(25-10)=0.6,end_y - start_y=50,计算得y=60 - 0.6*50=30,正好是start_y(10)向下20像素的位置,符合预期。
方法二:反向计算比例
直接计算当前数值距离最大值的相对比例,再映射到Y坐标:
start_y = 10 end_y = 60 min_val = 10 max_val = 25 # 计算当前值距离最大值的相对比例 percentage_within_range = (max_val - value) / (max_val - min_val) y = (percentage_within_range * (end_y - start_y)) + start_y
同样验证value=19:percentage_within_range=(25-19)/15=0.4,y=0.4*50 +10=30,结果一致。
另外注意:尽量避免用min、max作为变量名,防止和Python内置的min()、max()函数冲突,减少潜在bug。
内容的提问来源于stack exchange,提问作者lowercasename
相关产品推荐
相关产品推荐

