标签: mpandroidchart

MPAndroidChart - 网格线和限制线在后台不断闪烁

我正在尝试使用 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)

android mpandroidchart

5
推荐指数
0
解决办法
1941
查看次数

MPandroidChart 布局高度

我正在使用 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 mpandroidchart

5
推荐指数
1
解决办法
4837
查看次数

MP Android Chart - 如何设置条形图视图中显示的默认条数?

我是 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)

java charts android bar-chart mpandroidchart

5
推荐指数
1
解决办法
8484
查看次数

在MPAndroidChart中设置饼图切片颜色

我需要在饼图中为每个切片定义特定的十六进制值.

我正在关注维基,但该方法似乎并不适用PieDataSet

PieDataSet dataSet = new PieDataSet(entries, "Fuel");
dataSet.setColors(new int[] { R.color.green1, R.color.green2, R.color.green3, R.color.green4 }, Context);
Run Code Online (Sandbox Code Playgroud)

显示以下错误:

Cannot resolve symbol 'green1'

Expression expected  <-- At the 'Context'
Run Code Online (Sandbox Code Playgroud)

是否有另一种设置饼图切片颜色的方法?这似乎适用于折线图,但不适用于饼图.

android android-studio mpandroidchart

5
推荐指数
2
解决办法
8248
查看次数

每个数据线组有不同的渐变和颜色

我正在使用 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 mpandroidchart

5
推荐指数
0
解决办法
439
查看次数

如何添加mpandroidchart折线图触摸点值显示带线条颜色

如何添加mpandroidchart折线图触摸点值显示带有线条颜色背景的Marker视图

我的期望

在此输入图像描述

我的编码

CustomMarkerView mv = new CustomMarkerView (MainActivity.this, R.layout.tv_content);
chart.setMarkerView(mv);
Run Code Online (Sandbox Code Playgroud)

CustomMarkerView.java

public class CustomMarkerView extends MarkerView {

private TextView tvContent;
public CustomMarkerView (Context context, int layoutResource) {
    super(context, layoutResource);
    // this markerview only displays a textview
    tvContent = (TextView) findViewById(R.id.tvContent);
}

@Override
public void refreshContent(Entry e, Highlight highlight) {
    tvContent.setText("" + e.getVal());
}

@Override
public int getXOffset(float xpos) {
    return -(getWidth() / 2);
}

@Override
public int getYOffset(float ypos) {
    return -getHeight();
}
Run Code Online (Sandbox Code Playgroud)

}

android mpandroidchart

5
推荐指数
0
解决办法
1991
查看次数

BarChart 与 MPAndroidChart :条形图不可见

我正在使用 MPAndroidChart 在折叠工具栏中生成一个简单的条形图。当我添加条目时,条目的值在图表上的正确高度可见,但我看不到条形图。

这就是我创建变量的方式:

final List<BarEntry> barEntries = new ArrayList<>();
final BarDataSet barDataSet = new BarDataSet(barEntries, getResources().getString(R.string.cycles_profiled));
final BarData barData = new BarData(barDataSet);
Run Code Online (Sandbox Code Playgroud)

这就是我填充数据并刷新图表的方式:

final Calendar cal = getFirstDayOfWeek();
for (int i = 0; i < NUMBER_OF_DAYS; i++) {
    long date = cal.getTimeInMillis();
    barEntries.add(new BarEntry(date, map.get(date)));
    cal.add(Calendar.DAY_OF_WEEK, 1);
}
barDataSet.setValues(barEntries);
barChart.setData(barData);
barData.notifyDataChanged();
barChart.notifyDataSetChanged();
barChart.invalidate();
Run Code Online (Sandbox Code Playgroud)

图形

我在应用程序的其他部分创建条形图没有问题。当我在折叠工具栏中绘制折线图时,它也工作得很好。

android mpandroidchart

5
推荐指数
2
解决办法
2712
查看次数

textView 上的数据绑定空指针异常

我知道这个例外是什么,我知道有很多类似的问题。但我无法将这些解决方案应用于我的问题。当我使用findById()时一切正常,但是当我尝试使用数据绑定时,我被卡住了。我是数据绑定的新手。

public class HomePieChartMarkerViewModel extends MarkerView {
private TvContentBinding binding;

/**
 * Constructor. Sets up the MarkerView with a custom layout resource.
 *
 * @param context
 * @param layoutResource the layout resource to use for the MarkerView
 */
public HomePieChartMarkerViewModel(Context context, int layoutResource) {
    super(context, layoutResource);
}


@Override
public void refreshContent(Entry e, Highlight highlight) {
    binding.markerValue.setText("$ " + e.getY());// <<<< HERE I GOT AN ERROR
    super.refreshContent(e,highlight);
}
private MPPointF mOffset;

@Override
public MPPointF getOffset() {
    if(mOffset == null) …
Run Code Online (Sandbox Code Playgroud)

data-binding android nullpointerexception mpandroidchart android-databinding

5
推荐指数
1
解决办法
1159
查看次数

mpAndroidChart java.lang.NegativeArraySizeException:对于 Kotlin,为 -46

我在谷歌上搜索过并尝试了一些“解决方案”,但没有一个对我有用。我正在使用 'com.github.PhilJay:MPAndroidChart:v3.1.0' 并尝试制作折线图。

错误代码如下:

2021-06-29 11:57:35.319 com.example.myApp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myApp, PID: 15886
java.lang.NegativeArraySizeException: -58
    at com.github.mikephil.charting.utils.Transformer.generateTransformedValuesLine(Transformer.java:178)
    at com.github.mikephil.charting.renderer.LineChartRenderer.drawValues(LineChartRenderer.java:549)
    at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:278)
    at android.view.View.draw(View.java:23901)
    at android.view.View.updateDisplayListIfDirty(View.java:22776)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.draw(View.java:23904)
    at android.view.View.updateDisplayListIfDirty(View.java:22776)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at android.view.ViewGroup.drawChild(ViewGroup.java:5336)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5093)
    at android.view.View.updateDisplayListIfDirty(View.java:22762)
    at android.view.View.draw(View.java:23631)
    at …
Run Code Online (Sandbox Code Playgroud)

android kotlin mpandroidchart

5
推荐指数
1
解决办法
1353
查看次数

MPAndroidChart - 如何在 LimitLine 左侧显示文本?

我试图在 LimitLine 左侧显示文本,如下所示:

在此输入图像描述

然而,这些是我设置Label限制线位置的唯一选项。

在此输入图像描述

我正在使用LimitLine.LimitLabelPosition.LEFT_TOP,它只显示Label限制线上方的内容。

在此输入图像描述

YAxis leftAxis = mChart.getAxisLeft();
LimitLine minimumLimit = new LimitLine(50f, "Minimum Limit");
minimumLimit.setLineWidth(0.5f);
minimumLimit.setTextColor(ContextCompat.getColor(this, R.color.white_60_opacity));
minimumLimit.setLabelPosition(LimitLine.LimitLabelPosition.LEFT_TOP);
leftAxis.addLimitLine(minimumLimit);
Run Code Online (Sandbox Code Playgroud)

如何LimitLine在 的左侧显示 的标签LimitLine

编辑:

我也尝试过使用这些方法.setXOffset(50f).setYOffset(50f)但这只会改变标签的位置,而不改变线条的位置minimumLimit

在此输入图像描述

android mpandroidchart

5
推荐指数
1
解决办法
797
查看次数