2016-11-28 7 views
4

私は2つのBarChartDataSetsを持っています。そのうちの1つは常にサイズ3で、もう1つは2または3です。私はバージョン3.0.0でコードをテストし、すべて正常に動作していました。 3.0.1が出たとき、それは私のチャートを壊した。私は常に正しい数のバーを持っていますが、2番目のデータセットがサイズ2のときは5個ではなく6個のラベルがあります。stringForValueデリゲート関数とは関係ありません。私はXの値をintを使って設定します。これは、そのインデックスで表されるバーと線形に関連付けられているため、正しく動作すると各バーは等間隔ですが、6つのラベルと5つのバーがある場合、XAxisエントリ数は、Swift 3のiOS Chart 3.0.1よりも大きいです。

enter image description here 左側のものは問題を示し、右側のものは私のBarChartDataSetがサイズ3のときの様子を示しています。グラフの最後の値が何であれ複製して6番目のラベル左に。 3.0.0では、左側に5つのラベルしか持たないでしょう。

彼らはXAxisRendererHorizontalBarChart.swift
でラベルを作成ところ私は、彼らは私が私が呼ぶ直前にもかかわらず、コンソールに

xAxis entries: 6

を印刷し

print("xAxis entries: \(xAxis.entries.count)")

を呼び出す

drawLabel()

を呼び出す直前に自分のコードに掘って

let chartData = BarChartData(dataSets: [chartDataSet1, chartDataSet2])



print("dataEntries1 count: \(dataEntries1.count), dataEntries2 count: (dataEntries2.count)")
dataEntries1 count: 3, dataEntries2 count: 2

+1

あなたは3.0と3.0.1のスクリーンショットであなたのポストを更新して、おそらく同じようにコードしてください。誰でも簡単にアイデアを持ち、できるだけ早く手伝うことができます。 – Hasya

+0

私は明日できる。それから私はそれを処理します。 – Sethmr

+0

@Hasya画像を追加しました – Sethmr

答えて

2

まず、xAxis.entriesdataSet.entriesを出力
は全く異なっています。

xAxis.entriesは、ラベルとして軸に表示される値です。一方、dataSet.entriesは、データに表示される値です。折れ線グラフのドット値、または棒グラフの棒グラフ値。

x軸の場合は、データ項目の最小/最大値でラベル数を計算します。 Chart 3.0では、x軸はy軸のように振る舞いますので、y軸のようなx軸の項目を計算します。詳細はcomputeAxisValues()を見てください。

したがってxAxis.entriesdataSet.entriesは同じサイズである必要はありません。

あなたのバーはカウントとして、あなたが呼び出すことができ、同じカウントx軸ラベルを設定する場合:setLabelCount(5(6), true)

open func setLabelCount(_ count: Int, force: Bool) 
{ 
    self.labelCount = count 
    forceLabelsEnabled = force 
} 

注意、それは違うようlabelCountセッターを呼び出すことはありません:

/// the number of label entries the axis should have 
/// max = 25, 
/// min = 2, 
/// default = 6, 
/// be aware that this number is not fixed and can only be approximated 
open var labelCount: Int 
{ 
    get 
    { 
     return _labelCount 
    } 
    set 
    { 
     _labelCount = newValue 

     if _labelCount > 25 
     { 
      _labelCount = 25 
     } 
     if _labelCount < 2 
     { 
      _labelCount = 2 
     } 

     forceLabelsEnabled = false 
    } 
} 
+0

ありがとうございます。私はちょっと試してみると、すぐに私はそれが働いているとあなたに報いる。 – Sethmr

+0

** horizo​​ntalBarChart.xAxis.labelCount = dataEntries1.count + dataEntries2.count **は私のために修正した行です。 ** setLabelCount **を使用すると、ラベルを正しい場所に置かないという問題がありました。あなたは正しい方向に私を送った。APIを掘り下げる時間を節約してくれてありがとう。奨励金をお楽しみください;) – Sethmr

+2

あなたはlabelCountセッターを使用するように注意する必要があります。 forcelabelEnabledは、ラベルCountが設定した数に固執することを意味します。もしあなたがセッターを使うならば、カウントは再び異なる可能性があります – Wingzero

関連する問題