我目前正在尝试在Android应用程序中绘制图表。我找到的库名为GraphView(http://www.jjoe64.com/p/graphview-library.html)。我目前正在使用版本2,可以在GitHub上找到。
绘制图表的效果非常好。获取图表所需的代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Map<String,List<GraphEntry>> graphData = (...)
if (graphData != null) {
List<GraphEntry> entries = graphData.get("temperature");
GraphView.GraphViewData[] data = new GraphView.GraphViewData[entries.size()];
int i = 0;
for (GraphEntry entry : entries) {
data[i++] = new GraphView.GraphViewData(entry.getDate().getTime(), entry.getValue());
}
GraphView.GraphViewSeries graphViewSeries = new GraphView.GraphViewSeries("temperature", 0xffff0000, data);
LineGraphView graphView = new LineGraphView(this, "temperature");
graphView.addSeries(graphViewSeries);
graphView.setShowLegend(true);
LinearLayout graphLayout = (LinearLayout) findViewById(R.id.layout);
graphLayout.addView(graphView);
}
}
这将生成一个普通图形。不幸的是,缺少各种标签。文档告诉我们,对于正常的用例,人们不必关心标签,因为库会自动执行此操作。我究竟做错了什么?我只得到普通的图表,没有任何标签。
为了完整性,我将图形添加到线性布局中。相应的布局文件包含以下内容:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:padding="5dp"
android:id="@+id/layout"
android:orientation="vertical"
></LinearLayout>
GraphEntry类只是一个具有java.util.Date属性和double值属性的容器。
非常感谢您的帮助,
的Matthias
答案 0 :(得分:1)
我切换到另一个图表引擎:AChartEngine。这个开箱即用。
答案 1 :(得分:1)
我遇到了同样的问题。这可以通过从清单文件中删除以下行来解决。
android:theme="@style/AppTheme"
我知道这很模糊,但对我有用。我不知道为什么会发生这种情况。如果你们遇到更好的解决方案,请分享。
答案 2 :(得分:1)
您应该使用github的最新版本并将其包含在您的项目中。这将允许您使用
设置各种颜色graphView.getGraphViewStyle().setGridColor(Color.GREEN);
graphView.getGraphViewStyle().setHorizontalLabelsColor(Color.YELLOW);
graphView.getGraphViewStyle().setVerticalLabelsColor(Color.RED);