2016-05-26 20 views
0

Danielgindiのチャートフレームワークを使用してデータをユーザに提示しています。私がしたいことは、CombinedChartViewを使って2つのチャートを重ねて表示することです。 2つのチャートはBarChartDataSetLineChartDataSetです。私は正常に両方のデータセットを表示することができますが、私は描画順序を制御するように見えることはできません。 BarChartDataSetバーは常にLineChartDataSetの後ろに描画されます。この注文を元に戻し、裏にLineChartDataSet(私がそれに当てはまる塗りつぶしを含む)を持っておきたいです。iOSチャートの結合チャートの描画順序を変更

私の質問

は、どのように私は戻ってではなく、フロントで折れ線グラフを作成するCombinedChartViewの組み合わせ抽選の順番を変更できますか?ここで

は私のコードです:ここでは

// barDataEntries and lineDataEntries are generated in a different section and are not relevant to this question. Any data will do. 
// barDataEntries is of type [BarChartDataEntry]() 
// lineDataEntries is of type [ChartDataEntry]() 
let barChartSet = BarChartDataSet(yVals: barDataEntries, label: "The Bars") 
let lineChartSet = LineChartDataSet(yVals: lineDataEntries, label: "The Line") 
barChartSet.barShadowColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0) // If alpha is > 0, then grey bars will appear. 

// Cosmetic changes for the line chart 
lineChartSet.mode = .CubicBezier 
lineChartSet.lineWidth = 5.0 
lineChartSet.drawCirclesEnabled = false 
lineChartSet.drawFilledEnabled = true 
lineChartSet.colors = [UIColor(red: 0, green: 0, blue: 1, alpha: 0.0)] 
lineChartSet.fillColor = UIColor(red: 1, green: 0, blue: 0, alpha: 1.0) 
lineChartSet.fillAlpha = 0.8 

// Organizing data for statsChartViewController 
let data = CombinedChartData(xVals: xAxis) 
data.lineData = LineChartData(xVals: xAxis, dataSets: [lineChartSet]) 
data.barData = BarChartData(xVals: xAxis, dataSets: [barChartSet]) 

// statsChartViewController is of type CombinedChartView 
statsChartViewController.data = data 
statsChartViewController.leftAxis.axisMinValue = 0 

は私が取得していますものです:

Bar and line chart view

+0

はあなたが表示できます。ここで新しい結果は? – AnthonyR

+0

チャートは技術的には1つしかありませんが、ストーリーボードでは 'CombinedChartView'クラスに設定された' View'として定義されています。 'ViewController'(上記のすべてのコードを含みます)では、ストーリーボードの' View'はIBOutlet '@IBOutlet weak statsChartViewController:CombinedChartView!'にリンクされています! 'BarChartDataSet'と' LineChartDataSet'は個別に配置されませんストーリーボード。 'CombinedChartView'だけがです。 – Camon

答えて

2

source codeけれども見た後、私はあなたが描画順序を変更することを可能にする解決策を見つけました。クラスCombinedChartViewは、描画順序に責任がある公共の列挙型を持っています

public enum DrawOrder: Int 
{ 
    case Bar  // 0 
    case Bubble // 1 
    case Line  // 2 
    case Candle // 3 
    case Scatter // 4 
} 

あなたがオブジェクトを描画することにしたいために、drawOrderのためにintの配列を設定することにより、描画順序を変更することができます。下の例では、バーは線の前にあります。

// 2 is the line and 0 is the bar. 2 is drawn first, then 0 follows. 
statsChartViewController.drawOrder = [2, 0] 
statsChartViewController.data = data 

これは唯一の変更です。覚えておくことの重要なことの1つは、の描画順序をより前に設定してデータを設定することです。そうしないと、描画命令は以前と同じになります。あなたのフィナーレのUIViewにチャートを追加しているか

enter image description here

関連する問題