我使用MPAndroidChart显示包含两组数据(收入和支出)的堆积条形图.当值为0时,我遇到问题,标签与其他x轴值重叠.
在屏幕截图的情况下,您可以看到具有值的条形具有以下日期的重叠值:14/4,15/4和16/4.
如何隐藏0值以停止重叠问题?
请参阅底部更新(4/30/2015)
我正在使用ios-charts在Swift for iOS中实现一个饼图,并选择自定义图例.值得注意的是,图表显示在UICollectionView的单元格中.问题是,在第一次显示时,不显示自定义图例内容.相反,我获得了从数据生成的图例内容.
如果我在屏幕外滚动视图,然后将其滚动回屏幕,则会显示正确的自定义图例.所以,我猜我需要在设置自定义图例后强制重绘/重新布局/重新设置.我还没弄明白怎么做. 有没有人有想法?我完全错过了什么吗?谢谢!
初始显示图表 - 数据生成(错误)图例

滚动并返回到屏幕后的图表 - (正确的图例)

这是我绘制此图表的代码:
func initChart(pieChart: PieChartView) {
numFormatter.maximumFractionDigits = 0
pieChart.backgroundColor = UIColor.whiteColor()
pieChart.usePercentValuesEnabled = false
pieChart.drawHoleEnabled = true
pieChart.holeTransparent = true
pieChart.descriptionText = ""
pieChart.centerText = "30%\nComplete"
pieChart.data = getMyData()
// Setting custom legend info, called AFTER setting data
pieChart.legend.position = ChartLegend.ChartLegendPosition.LeftOfChartCenter
pieChart.legend.colors = [clrGreenDk, clrGold, clrBlue]
pieChart.legend.labels = ["Complete","Enrolled","Future"]
pieChart.legend.enabled = true
}
func getMyData() -> ChartData {
var xVals = ["Q201","R202","S203","T204","U205", "V206"]
var courses: [ChartDataEntry] = …Run Code Online (Sandbox Code Playgroud) 我有一个ScrollView中包含的LineChart.当图表足够长以使用户无需滚动以完整地查看它时,拖动功能就会变得无法响应.拖动手势仅在我在图表边界中将手指按住一小段时间时才会记录,然后拖动.
我已经尝试使用requestDisallowInterceptTouchEvent方法,该方法应该阻止图表的父母拦截触摸事件(但这并没有解决任何问题).我也尝试直接将ScrollView注册的MotionEvents直接传递给图表/翻译拖动手势来翻译Y调用,但这并没有达到我想象的效果.
注意:缩放继续完美运行.
此外,当图形适合原始窗口或放置在任何不是ScrollView的视图中时,这不是问题.我考虑过摆脱ScrollView,但这是我项目中非常必要的功能.
关于为什么会发生这种情况的任何想法将不胜感激!
编辑:LineChart具有固定的高度
现在我正面临着这个问题.我在xAx中得到的重复值是第一个和最后一个.图形值不是根据各个x轴值的值.第二个问题是,如果我想显示不在float中但在int Rounded中的值,并将它们的颜色更改为白色.
ArrayList<String> xlabels = new ArrayList<String>();
xlabels.add("Jan");
xlabels.add("Feb");
xlabels.add("Mar");
xlabels.add("Apr");
xlabels.add("May");
xlabels.add("Jun");
ArrayList<String> values = new ArrayList<String>();
values.add("1");
values.add("20");
values.add("10");
values.add("80");
values.add("90");
values.add("24");
showLineChart(clickChart,xlabels,values,mColors[3]);
Run Code Online (Sandbox Code Playgroud)
showLineChart方法:
private void showLineChart(LineChart chart,final List<String> xLabels, List<String> values,int color){
List<Entry> entries = new ArrayList<Entry>();
for(int i=0;i<values.size();i++){
entries.add(new Entry(i, Integer.parseInt(values.get(i))));
}
LineDataSet dataSet = new LineDataSet(entries, "Numbers");
dataSet.setLineWidth(1.75f);
dataSet.setCircleRadius(5f);
dataSet.setCircleHoleRadius(2.5f);
dataSet.setColor(Color.WHITE);
dataSet.setCircleColor(Color.WHITE);
dataSet.setHighLightColor(Color.WHITE);
dataSet.setDrawValues(true);
LineData data = new LineData(dataSet);
((LineDataSet) data.getDataSetByIndex(0)).setCircleColorHole(color);
chart.getDescription().setEnabled(false);
chart.setDrawGridBackground(false);
chart.setTouchEnabled(true);
chart.setBorderColor(Color.WHITE);
chart.setDragEnabled(true);
chart.setScaleEnabled(true);
chart.setPinchZoom(false);
chart.setBackgroundColor(color);
YAxis yAxisLeft = chart.getAxisLeft();
yAxisLeft.setTextColor(Color.WHITE);
yAxisLeft.setAxisLineColor(Color.WHITE); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 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 饼图,我做了一个 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 库处理分组条形图:
public void drawing_length(String length)
{
ArrayList<String> xx = new ArrayList<String>();
ArrayList<String> yy = new ArrayList<String>();
ArrayList<String> zz = new ArrayList<String>();
int L = 7;
if (length.equals("7days"))
{
L = 7;
}
if (length.equals("14days"))
{
L = 14;
}
if (length.equals("30days"))
{
L = 30;
}
if (L > x.size())
{
L = x.size();
}
for (int g=0; g<L; g++)
{
xx.add(x.get(g)); // newest first, oldest last
yy.add(y.get(g));
zz.add(z.get(g));
}
Collections.reverse(xx); //oldest first, newest last, i.e. sequential …Run Code Online (Sandbox Code Playgroud) mpandroidchart ×10
android ×8
charts ×2
bar-chart ×1
cube ×1
cubic-bezier ×1
ios-charts ×1
java ×1
linechart ×1
scrollview ×1