java - 当有单个值或y轴值相同时,Hellocharts android库不渲染图表
问题描述
我正在使用 hellochart 库 https://github.com/lecho/hellocharts-android在我的应用程序中显示折线图。
当我尝试使用单个值生成图形时,它只显示一个空图形(它应该在图形中显示一个点,指示值对吗?)。
如果第一个和第二个 y 轴值相同(当只有 2 个值时),问题也仍然存在。
任何想法为什么会出现这个奇怪的问题?
下面给出了正在使用的代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<String> datelist = new ArrayList<String>();
List<Float> weightlist = new ArrayList<Float>();
datelist.add("12/Apr/2020");
weightlist.add(72f);
datelist.add("13/Apr/2020");
weightlist.add(72f);
LineChartView chart = findViewById(R.id.chart);
List<AxisValue> axisValues = new ArrayList<AxisValue>();
List<PointValue> values = new ArrayList<PointValue>();
for (int i = 0; i < datelist.size(); ++i) {
values.add(new PointValue(i, weightlist.get(i)));
axisValues.add(new AxisValue(i).setLabel(datelist.get(i)));
}
Line line = new Line(values).setColor(Color.BLUE).setCubic(false);
line.setHasLabels(true);
List<Line> lines = new ArrayList<Line>();
lines.add(line);
LineChartData data = new LineChartData();
data.setLines(lines);
data.setAxisXBottom(new Axis(axisValues));
data.setAxisYLeft(new Axis());
chart.setLineChartData(data);
}
}
解决方案
这是我最终找到的解决方案,手动设置视口。
float ymax= maxyvalue +10f;
final Viewport v = new Viewport(chart.getMaximumViewport());
v.top =ymax; //max value
v.bottom = 0f; //min value
chart.setMaximumViewport(v);
chart.setCurrentViewport(v);
希望它将来对某人有所帮助。
推荐阅读
- reactjs - agGrid autoHeightCalculator 持有渲染
- discord - 如何通过 API 在 Discord 服务器中添加或删除用户
- arrays - 将部分文件名分配给bash中的变量
- mongodb - 使用 mongodb/mongo-go-driver 和 Azure CosmosDB 的 ModifiedCount 和 MatchedCount 不正确
- c# - Enterprise Architect 加载项 .dll 在部署到 Windows 7 计算机时崩溃
- angular - 插入后材料表不更新数据
- sqlalchemy - 用新版本替换行 sqlalchemy
- unity3d - 将多个精灵加载到图像 UI 的最佳方式
- java - 如何知道我在 Java 中使用的是外部库还是内部库?
- git - 克隆的 repo 不包含 .\.git\object 文件