我一直试图创建一个显示食品库存水平随时间下降的条形图。
I used the sample code from here:
我在GraphViewDemo中略微更改了代码以在Y轴上容纳4个值:
(“好”,“好”,“好”和“坏”)和X轴上的4个值
(“今天”,“明天”,“2天”,“3天”)
并希望了解库存水平如何随着时间的推移而降低。这里的代码应该显示条形从坏到大增加:
float[] values = new float[] { 1.0f,1.5f, 2.0f, 2.5f };
String[] verlabels = new String[] { "great", "good", "ok", "bad"};
String[] horlabels = new String[] { "today", "tomorrow", "2 days", "3 days" };
GraphView graphView = new GraphView(this, values, "Stock Levels",horlabels, verlabels, GraphView.BAR);
setContentView(graphView);
数字1.0f,1.5f,2.0f,2.5f没问题。问题是,如果我将第一个浮点数改为2.0(期望第一个柱子改为“好”的高度),则所有柱都会改变。
在这种情况下,视图将更改为第一个和第三个条形高度介于“ok”和“good”之间,第二个条形高度为“bad”。
这可能与第94行附近的GraphView类中的像素转换有关,但代码评论不是很好,我发现很难理解所有内容。
答案 0 :(得分:0)
问题似乎与GraphView类中的这一行有关:
canvas.drawRect((i * colwidth) + horstart, (border - h) + graphheight, ((i * colwidth) + horstart) + (colwidth - 1), height - (border - 1), paint);
所以我在图表上找到了4个高度的值(“好”,“好”,“好”,“坏”)并创建了一个设置变量的switch语句。该开关将采用值1.0,1.5,2.0和2.5,并将其与相应的条形高度相关联。
然后我用变量替换了高度,而不是以下计算“(border-h)+ graphheight”。这样,酒吧只有4个高度。