我正在使用MPAndroidChart。当我使用 LineChart setDrawFilled() 方法填充线条和 x 轴之间的空间,并手动将范围调整为大于默认值时,填充的部分将超出 x 轴,如下所示截屏:
蓝色填充应在绿色虚线处停止,该线位于 x 轴上方,但它会延伸至正 y 值。
*经过进一步调查,我发现似乎只有在绿线设置为 0 时才会发生。
我正在尝试自定义图例,但无法这样做。我的目的是提供不同的图例标签。我使用 MPChart 库来做到这一点。
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(4f, 0));
entries.add(new BarEntry(8f, 1));
entries.add(new BarEntry(6f, 2));
entries.add(new BarEntry(12f, 3));
entries.add(new BarEntry(18f, 4));
mColors.add(R.color.red);
mColors.add(R.color.text_color_gray);
mColors.add(R.color.text_color_blue);
mColors.add(R.color.green);
mColors.add(R.color.black);
BarDataSet dataset = new BarDataSet(entries, null);
ArrayList<String> labels = new ArrayList<String>();
labels.add("05");
labels.add("06");
labels.add("07");
labels.add("08");
labels.add("09");
BarData data = new BarData(labels, dataset);
Legend legend = mChart.getLegend();
legend.setEnabled(true);
legend.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);
legend.setForm(Legend.LegendForm.SQUARE);
legend.setColors(mColors);
legend.setLabels(mLabels);
mChart.setData(data);
mChart.animateY(2000);
LimitLine line = new LimitLine(10f);
YAxis yAxis = mChart.getAxisLeft();
yAxis.addLimitLine(line);
yAxis.setDrawAxisLine(true);
mChart.setDrawValueAboveBar(true);
mChart.setDrawBarShadow(false);
mChart.setVisibleXRange(4);
mChart.moveViewToX(2);
mChart.setDrawValueAboveBar(false);
mChart.invalidate();
Run Code Online (Sandbox Code Playgroud)
请让我知道任何解决方案。
我正在使用 awsome MPandroidChart 开源库,我正在根据我在线接收的数据实时填充图表,当使用新值填充图表时,我只允许特定数量的 x 索引可见,使用“setVisibleXRange( )”和“moveViewToX()”将图表滑动到屏幕左侧,一次只显示最后一个条目。
这一切都很好,但我想实现一种情况,即修改视口以完全适合最高和最低可见值,与“fitScreen()”相同,但仅修改 Y 轴。“zoomOut()”和“zoomIn()”使用相对输入,与“zoom()”相同,所以我不能根据我的数据使用它们。我需要的是一种将视图定位在 Y 轴上的方法,以便它在每个周期适合不同的范围,例如:2 到 15 或 -98 到 34 等等。
有没有人对如何做到这一点有任何想法?感谢所有的答案。@菲尔杰
我正在尝试使用 MPAndroidChart 库绘制实时图表。虽然我成功地绘制了图形,但在绘制图形时网格线和限制线不断闪烁。
LineData data = myGraph.getData();
if (data != null) {
LineDataSet set = data.getDataSetByIndex(0);
if (set == null) {
set = createSet();
data.addDataSet(set);
}
// add a new x-value first
DecimalFormat df = new DecimalFormat("#.0");
String xVal = df.format(theRunningTime);
data.addXValue(xVal+"s");
data.addEntry(new Entry( yValue, set.getEntryCount()), 0);
// let the chart know it's data has changed
audioGraph.notifyDataSetChanged();
audioGraph.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
下面的代码介绍了图中的限制线
YAxis yl = myGraph.getAxisLeft();
yl.setTextColor(Color.WHITE);
yl.setTextSize(8f);
yl.setAxisMinValue(0);
yl.setDrawGridLines(false);
yl.setDrawAxisLine(true);
yl.setValueFormatter(new MyValueFormatter());
yl.setStartAtZero(true);
//Remove any previous limit lines
yl.removeAllLimitLines();
LimitLine ll …Run Code Online (Sandbox Code Playgroud) 我正在使用 MPAndroidChart 在片段内创建条形图,但图表高度仅占整个屏幕的一小部分。另外,当高度设置为数字时,它可以正常工作,但这不是我想要的解决方案。问题是什么?下面是片段布局代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity$PlaceholderFragment">
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/barchart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
编辑:抱歉缺乏详细信息,我在我的项目中使用了带有操作栏微调器模板的选项卡式活动。
<android.support.design.widget.AppBarLayout android:id="@+id/appbar"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_scrollFlags="scroll|enterAlways">
<Spinner android:id="@+id/spinner" app:popupTheme="@style/AppTheme.PopupOverlay"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView android:id="@+id/container"
android:layout_width="match_parent" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
Run Code Online (Sandbox Code Playgroud)
我还有正在运行的应用程序的图像
我是 Android 开发新手,目前正在学习如何构建图表,希望最终连接到数据库并创建动态图表。我使用了 MPAndroid 图表 GitHub 页面 ( https://github.com/PhilJay/MPAndroidChart/ )中的示例,并尝试对其进行操作以满足我的要求。
现在我的图表有一个 x 轴(天)和一个 y 轴(加仑)。
为简单起见,我创建了一个字符串数组“Day1”到“Day30”,用作 X 值。Y 值是一个随机数(只是为了查看不同的条形大小)。
目前:我的图表显示了所有 30 天的随机 Y 值,我可以放大和缩小,以及在放大时向左或向右滚动。
我想要什么:构建图表后,我希望图表的默认视图仅显示 7 天(例如“Day5”到“Day11”),但仍然能够在图表上向左或向右滚动到查看其他1-30天。另外,我希望能够从 7 天缩小到最多 30 天,或者放大以查看至少 3 天。
这是我目前的java文件。我知道现在很草率,我正在学习
public class ConsumptionActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, OnChartValueSelectedListener, OnSeekBarChangeListener {
protected BarChart mChart;
private SeekBar mSeekBarX, mSeekBarY;
private TextView tvX, tvY;
private Typeface mTf;
protected String[] mDays = new String[] {
"Day 1","Day 2","Day 3","Day 4","Day 5","Day 6","Day 7","Day 8","Day 9","Day 10","Day 11","Day 12","Day …Run Code Online (Sandbox Code Playgroud) 我正在使用 MPAndroidChart 在我的 Android 应用程序中创建图表。我想知道是否可以使用 MPChart 创建这样的图表。
我使用了LineChart并在LineSet的setFillDrawable中添加了GradientDrawable
int[] colors = {Color.parseColor("#00ff0000"), Color.parseColor("#FFB3F9E3")};
GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TR_BL, colors);
lineSet.setFillDrawable(gd);
Run Code Online (Sandbox Code Playgroud)
但它并没有像预期的那样出现。或者建议我最适合我的目的的图形库。
我还有几个疑问
数据集名称如何与 line 一起显示?
如果绘制了多条线集,如何仅显示一条线的标记视图
我已经在我的 android 应用程序中实现了 Mpandroid 饼图,我做了一个 BMI 计算器,我想根据我得到的 BMI 结果突出显示饼图的特定切片。有没有关于如何突出显示特定切片的解决方案不碰它。例如。如果 BMI 介于 10-20 之间,则应突出显示范围为 10-20 的特定切片。 我不希望我的触摸突出显示切片,我希望它根据我获得的 BMI 结果自动发生。
这是我的代码-->
Activity_main.java
public class MainActivity extends AppCompatActivity
{
private RadioGroup radioSexGroup;
private RadioButton radioSexButton;
private int selectedId;
private EditText age;
private EditText height;
private EditText weight;
// private TextView result;
private TextView t1;
private Spinner height_spinner;
private Spinner weight_spinner;
private Button calculate;
private PieChart mChart;
String spinner_height; //Height Spinner
String spinner_weight; //Weight Spinner
String selected_item1;
String selected_item2;
float bmi=0f;
protected String[] BMIcategory …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用立方图制作 LineChart。结果如下面的截图所示:三次贝塞尔曲线显示错误并有“尖峰”。有人可以帮我让它正确显示吗?
这是我的配置:
LineDataSet lineDataSet = new LineDataSet(entries,nameLabel);
lineDataSet.setColor(Constants.colors.get(i));
lineDataSet.setDrawValues(false);
lineDataSet.setDrawCircles(false);
lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
Run Code Online (Sandbox Code Playgroud)
mpandroidchart ×10
android ×9
java ×2
linechart ×2
bar-chart ×1
charts ×1
cube ×1
cubic-bezier ×1
json ×1
view ×1