我想在选择一个值时显示带有特定数据的标签,如我想要的演示图像中所示:

所以我粘贴此代码(在示例的源代码中找到):
protected RectF mOnValueSelectedRectF = new RectF();
@Override
public void onValueSelected(Entry e, Highlight h) {
if (e == null)
return;
RectF bounds = mOnValueSelectedRectF;
mChart.getBarBounds((BarEntry) e, bounds);
MPPointF position = mChart.getPosition(e, AxisDependency.LEFT);
Log.i("bounds", bounds.toString());
Log.i("position", position.toString());
Log.i("x-index",
"low: " + mChart.getLowestVisibleX() + ", high: "
+ mChart.getHighestVisibleX());
MPPointF.recycleInstance(position);
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,显示日志但屏幕上没有任何反应。我忘记或错过了什么
使用MPAndroidChart我尝试制作以下两个图表。以下图像是不言自明的:一张是当 y 轴为正时,另一张是当 y 轴为负时(此处图表的值不可见):正轴图 负轴图
我正在尝试使用 MpAndroidChart 库绘制带有圆角的饼图。
预期输出与此类似。
两端都需要是外圆的。有一个方法pieChart.setDrawRoundedSlices(true),但问题是饼图的起点变得内圆。
这是实际的输出。
// initialise pie chart UI
fun initChart(mChart: PieChart) {
mChart.description.isEnabled = false
mChart.holeRadius = 75f
mChart.transparentCircleRadius = 60f
mChart.setHoleColor(Color.TRANSPARENT)
mChart.legend.isEnabled = false
mChart.isRotationEnabled = false
mChart.setTouchEnabled(false)
mChart.maxAngle = 270f
mChart.rotation = -135f
mChart.animateX(400)
mChart.setDrawRoundedSlices(true)
}
Run Code Online (Sandbox Code Playgroud) 我举个例子,这是我的图表(请注意,我已经降低了贝塞尔强度以减少线条的错误):

我希望它以这种方式呈现:

请原谅画得很糟糕的红线,我只是用MS Paint来画得很快,呵呵。
我希望我的图表看起来像第二个示例中的红线,其中曲线的边缘是我的值,而不是0.1f我的值点之前的 x。我还注意到,当使用xAxis启用时,它无法正确显示我的值,其中整数从 0 到 4(含),但显示为浮点数,如 0.9、1.9、...、3.9,与贝塞尔曲线边缘匹配。我相信这是错误的。
根据记录,贝塞尔模式正在应用于我的数据集dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER。
我使用 MPAndroidChart库创建了一个堆叠条形图,现在当用户单击条形图时,我想显示一个包含一些详细信息的标记,如下图所示:

我发现了关于这个主题的不同主题,但找不到明确的解决方案,所以如果可以的话请帮助我。谢谢!
编辑
for (item in dataTicketsList) {
if (i <= 2) {
val firstValue: String = transformDataForChart(item.values.first!!)
hoursValuesArray.add(firstValue.toFloat())
val secondValue: String = transformDataForChart(item.values.second!!)
hoursValuesArray.add(secondValue.toFloat())
val thirdValue: String = transformDataForChart(item.values.third!!)
hoursValuesArray.add(thirdValue.toFloat())
entriesVerticalBar.add(BarEntry(i, hoursValuesArray.toFloatArray()))
i++
hoursValuesArray.clear()
if (item.label!!.contains("." + (Calendar.getInstance().get(Calendar.YEAR) - 1).toString())) {
val date: String = item.label!!.replace("." + (Calendar.getInstance().get(Calendar.YEAR) - 1).toString(), "")
barLabesArrayList.add(date)
} else if (item.label!!.contains("." + (Calendar.getInstance().get(Calendar.YEAR)).toString())) {
val date: String = item.label!!.replace("." + (Calendar.getInstance().get(Calendar.YEAR)).toString(), "")
barLabesArrayList.add(date)
}
}
}
verticalBarChartColors.add(Color.rgb(89, 93, …Run Code Online (Sandbox Code Playgroud) 我想在我的项目中使用 MPAndroidChart。
我在我的 gradle 中添加了该库,但在我的 xml 布局文件中,我找不到 Chart。
我的 build.gradle(Module) 是这样的:
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
}
Run Code Online (Sandbox Code Playgroud)
build.gradle(Project) 是这样的:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的MPAndroidChart库线图:
chart.setDrawYValues(false);
chart.setDescription("");
chart.setDrawVerticalGrid(true);
chart.setDrawGridBackground(false);
XLabels xl = holder.chart.getXLabels();
xl.setCenterXLabelText(true);
xl.setPosition(XLabelPosition.BOTTOM);
YLabels yl = holder.chart.getYLabels();
yl.setLabelCount(5);
// set data
chart.setData((LineData) mChartData);
chart.setDrawYValues(true);
chart.setValueTextSize(20f);
// zooming on both axis
chart.setPinchZoom(true);
chart.animateX(1000);
Run Code Online (Sandbox Code Playgroud)
但我有一个可视化问题.X轴上的标签不在相对网格线下,但在两条线之间(在Y轴上我没有这个问题).有没有办法将Y标签正好放在相对网格线下?
MPAndroidChart是非常棒的库.我非常感谢.但现在,我有3个问题.
我使用的版本是......
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
Run Code Online (Sandbox Code Playgroud)
我的问题是,......
1.如何在折线图或条形图上绘制限制Y值线?
例如,我想在Image上绘制y = 200行的值.(例如附加图片top.shown红色)
2.如何将视点设置为底部并将y轴薄荷限制到底部值? (例如附加图像底部)我想将视点设置为底部.我尝试了这段代码,但仍然有一些填充.
XAxis xAxis = mBarChart.getXAxis();
xAxis.setAxisMinValue(0);
Run Code Online (Sandbox Code Playgroud)
我想修剪这个填充.
*编辑
这很好用.谢谢!
mChart.getAxisLeft().setAxisMinValue(0);
Run Code Online (Sandbox Code Playgroud)
3.如何在折线图上删除图形点?
折线图,底部图像,有很多标记.所以我想删除这些情节点.
我已经OnChartValueSelectedListener为我的饼图写了以下内容.我可以使用下面的代码获取值.但是,我想获得文本标签.在下面的代码中,e.getY()将获得y值.如何获取文本标签Entry?
holder.chartyear.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, Highlight h) {
Log.e("VAL SELECTED", "Value: " + e.getY() + ", index: " + h.getX()
+ ", DataSet index: ");
}
@Override
public void onNothingSelected() {
}
});
Run Code Online (Sandbox Code Playgroud)