我在Android项目中使用Android MPChart库.我想在饼图上仅显示数据值的位置.
我试过了
chart.setUsePercentValues(false);
Run Code Online (Sandbox Code Playgroud)
但它用%符号显示实际值.我想删除该%符号.如何删除%符号?
如果可能的话,我想在图例中显示数据.
饼图代码
chart.setUsePercentValues(false);
chart.setHoleColorTransparent(true);
chart.setHoleRadius(60f);
chart.setDrawHoleEnabled(true);
chart.setRotationAngle(0);
chart.setRotationEnabled(true);
chart.setDescription("");
chart.setDrawSliceText(false);
PieDataSet dataSet = new PieDataSet(yVals, "");
dataSet.setSliceSpace(3f);
dataSet.setColors(colors);
/**Set data to piechart */
PieData data = new PieData(xVals, dataSet);
data.setValueFormatter(new PercentFormatter());
data.setValueTextSize(10f);
data.setValueTextColor(Color.WHITE);
chart.setData(data);
chart.setDescription("");
chart.highlightValues(null);
chart.animateXY(1500, 1500, AnimationEasing.EasingOption.EaseOutBack);
chart.setTouchEnabled(true);
Legend l = chart.getLegend();
l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
l.setXEntrySpace(7f);
l.setYEntrySpace(5f);
chart.invalidate();
Run Code Online (Sandbox Code Playgroud) 只是想知道是否有人想出如何在MPAndroidChart中设置条形图的突出显示颜色?目前,它就像一个深黑色(有点透明)的覆盖层。我想将其制成白色(有点透明)的覆盖物,甚至是渐变色。有点像这样:
我正在使用MPAndroidChart,并且想用markerview显示xlabes和ylabes的值,我已经显示了y轴的值。而且我不知道如何显示x轴(xVals)的值,您能告诉我如何执行此操作或提供一些教程链接吗?非常感谢
我正在使用MPAndroidChart,并想知道如何在下面的图表上执行点击事件并获得相关的回调:饼图:点击特定原因打开其详细信息.条形图:点击任意栏打开其详细信息.堆积条形图:点击任意栏打开其详细信息.
单击图表时,我需要收到通知.
尝试安装MPAndroidChart时,我尝试按照自述文件中的说明将库添加为gradle依赖项。
编辑:我没有编辑顶级build.grade文件,只有build.gradle我应用目录中的文件。后者看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.gmail.konstantin.schubert.workload"
minSdkVersion 16
targetSdkVersion 23
versionCode 7
versionName "1.1.5"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.google.guava:guava:17.0'
compile 'joda-time:joda-time:2.8.2'
compile 'com.android.support:design:23.0.0'
compile 'com.github.PhilJay:MPAndroidChart:v2.2.3'
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在依赖项中添加了maven存储库和compile指令。
但是,Android Studio给我一个错误:
Error:(32, 13) Failed …Run Code Online (Sandbox Code Playgroud) gradle android-studio android-gradle-plugin mpandroidchart jitpack
我正在使用MPAndroid库在Android应用程序中显示一个简单的条形图。条形图有时会完美显示数据。但是,有时即使数据集包含数据,它也会显示消息“没有可用的图表数据”。
仅当我点击“图表”区域时,才会显示该图表。我用谷歌搜索,但是找不到解决方案。以下是代码:
if (mCount > 0){mBarDataSet = new BarDataSet(mBarEntryAssessmentList, "Assessment Count");
mBarDataSet.setBarSpacePercent(5f);
mBarData = new BarData(trimmedSubjectNameList, mBarDataSet);
mBarData.setValueFormatter(new BarEntryValueFormatter()); // Setting a Value formatter to show Integer data instead of Float
mBarChart.setData(mBarData);
mBarChart.setDescription("");
mBarChart.setDrawGridBackground(false);
mBarChart.setDragEnabled(true);
mBarChart.setTouchEnabled(true);
mBarChart.setClickable(true);
mBarChart.setScaleXEnabled(false);
mBarChart.setScaleYEnabled(false);
mBarChart.setVisibleXRange(1, 4);
mBarChart.setHighlightPerDragEnabled(false);
mBarChart.setHighlightPerTapEnabled(true); // set this to true if we want to listen to click events
mBarChart.setOnChartValueSelectedListener(StudentProgressActivity.this);
XAxis xAxis = mBarChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawLabels(true);
xAxis.setDrawGridLines(false);
xAxis.setLabelsToSkip(0); // Shows all the labels as initially we had problems showing all the labels
YAxis …Run Code Online (Sandbox Code Playgroud) 与工作@BindingAdapter一直正常,直到如今.我得到一个不寻常的问题,我没有看到如何解决它的明确路径.
堆栈跟踪
@BindingAdapter on invalid element: setPieChartData(com.github.mikephil.charting.charts.PieChart,java.util.HashMap<java.lang.String,java.lang.Integer>,java.lang.String)
at com.sun.tools.javac.main.Main.compile(Main.java:553)
at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:46)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:33)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:104)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:53)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:35)
at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:25)
at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:206)
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:187)
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:130)
at com.android.build.gradle.tasks.factory.AndroidJavaCompile.compile(AndroidJavaCompile.java:49)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
Run Code Online (Sandbox Code Playgroud)
我的功能
@BindingAdapter({"bind:alternatives","bind:topic"})
private static void setPieChartData(PieChart pieChart, HashMap<String,Integer> alternatives, String topic) {
PieChartHelper.initializePieChart(pieChart,alternatives,topic);
}
Run Code Online (Sandbox Code Playgroud)
我的XML布局
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pie_chart"
android:layout_width="match_parent"
android:layout_height="300dp"
app:alternatives="@{gameFeedItem.alternatives}"
app:topic="@{gameFeedItem.topic}"/>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我为其他观点做了类似的解决方案.但这是唯一一个完整的自定义视图.那么PieChart类不能以这种方式支持数据绑定吗?
我有以下数据使用MPAndroidChart库以图表格式表示:
Subject Marks
Needs Attention Average Outstanding
Hindi 1/5 2/5 2/5
English 2/7 3/7 2/7
Maths 1/3 1/3 1/3
Science 2/7 2/7 3/7
Physics 2/9 4/9 4/9
Sanskrit 3/7 3/5 0
Run Code Online (Sandbox Code Playgroud)
我想要一个如下图表:
上面的图表只是样品,我希望每个条形图中有三种颜色(堆叠).我已经制作了一个单独颜色的条形图,但不能制作这样的多色图表.在MPAndroidChart中有可能吗?
使用MPAndroidChart 3.0.2 绘制水平条形图.值显示在条形图的右侧.我可以使用setValueFormatter并使用IAxisValueFormatter接口在右侧显示标签.但是现在不显示这些值.
{
HorizontalBarChart barChart = (HorizontalBarChart) itemView.findViewById(R.id.barChart);
BarData data = new BarData();
ArrayList<BarEntry> valueSet1 = new ArrayList<>();
ArrayList<String> labels = new ArrayList<>();
labels.add("January");
labels.add("February");
labels.add("March");
labels.add("April");
labels.add("May");
labels.add("June");
ArrayList<String> ylabels = new ArrayList<>();
int dataCount=0;
for (int i=0;i<6;++i) {
BarEntry entry = new BarEntry(dataCount,(i+1)*2);
valueSet1.add(entry);
ylabels.add(" "+i);
dataCount++;
}
List<IBarDataSet> dataSets = new ArrayList<>();
BarDataSet bds = new BarDataSet(valueSet1, " ");
bds.setColors(ColorTemplate.MATERIAL_COLORS);
String[] xAxisLabels = labels.toArray(new String[0]);
String[] yAxisLabels = ylabels.toArray(new String[0]);
bds.setStackLabels(xAxisLabels);
dataSets.add(bds);
data.addDataSet(bds);
data.setDrawValues(true);
data.setBarWidth(0.4f); …Run Code Online (Sandbox Code Playgroud) 如何根据Y轴的值设置不同条形的颜色?我正在使用MPAndroidChart库制作图形。这是我制作条形图的步骤:
BarChart barChart = (BarChart) findViewById(R.id.chart);
BarDataSet dataset = new BarDataSet(entries, "Calorie Level");
ArrayList<String> labels = new ArrayList<String>();
labels.add("0");
labels.add("1");
labels.add("2");
BarData data = new BarData(labels, dataset);
barChart.setData(data);
barChart.animateY(2000);
Run Code Online (Sandbox Code Playgroud)
我正在从以下函数计算值。我需要根据下面给出的'delta'值设置每个条形的颜色
private void addCalories(int calories, int time)
{ totalCals += calories;
float HBNow = HBE * time / 24;
float delta = totalCals - HBNow;
entries.add(new BarEntry(delta, time));
Log.e("My Activity:", "Delta" + delta + "Time:" + time);
}
Run Code Online (Sandbox Code Playgroud)