我想創建下面鏈接的圖表。我有用二進制標誌(0 =紅色,1 =藍色)編碼的數據,它也是有序的。例如,數據我會用假設創建下面左邊欄看起來像表以低於用有序的二進制數據創建條形圖
表
圖
鏈接任何人都可以建議我怎麼能做到這一點?謝謝。
我想創建下面鏈接的圖表。我有用二進制標誌(0 =紅色,1 =藍色)編碼的數據,它也是有序的。例如,數據我會用假設創建下面左邊欄看起來像表以低於用有序的二進制數據創建條形圖
表
圖
鏈接任何人都可以建議我怎麼能做到這一點?謝謝。
假設你的數據表被安排這樣的:
這應該適應任何數量的行列,並且任意數量的列。運行宏,並選擇包含所有二進制標誌,細胞樣細胞的範圍:
它將創建像圖表:
Option Explicit
Sub BuildRankedBinaryChart()
Dim ws As Worksheet
Dim cht As Chart
Dim ax As Axis
Dim rngFlag As Range
Dim xVal As Double
Dim r As Long
Dim c As Long
Dim s As Long
Dim p As Long
Dim pt As Point
Set ws = ActiveSheet
On Error Resume Next
Set rngFlag = Application.InputBox(_
"Select the binary flags.", _
"Binary Flag", Type:=8)
If Err <> 0 Then
On Error GoTo 0
Exit Sub
End If
'## Determine what VALUES to use for each point:'
xVal = 1/rngFlag.Rows.Count
ReDim xVals(1 To rngFlag.Columns.Count)
For c = 1 To rngFlag.Columns.Count
xVals(c) = xVal
Next
'## Add a new chart to the sheet.'
Set cht = ws.ChartObjects.Add(50, 50, 300, 200).Chart
'## Format the chart:'
With cht
.ChartType = xlColumnStacked100
.HasLegend = False
.Axes(xlPrimary).Delete
Set ax = .Axes(xlSecondary)
With ax
.HasMajorGridlines = False
.HasMinorGridlines = False
.Delete
.ReversePlotOrder = True
End With
End With
'## Each ROW in the table is a new series.'
For r = 1 To rngFlag.Rows.Count
'## Add a new series to the chart'
With cht.SeriesCollection.NewSeries
'## Assign the values calculated above'
.Values = xVals
'## Apply labels'
.ApplyDataLabels
'## Finally, fake out the labels and apply the color to each point.'
For p = 1 To .Points.Count
With .Points(p)
If rngFlag.Rows(r).Cells(1, p).Value = 1 Then
.Format.Fill.ForeColor.RGB = vbRed
.DataLabel.Text = 1
Else:
.Format.Fill.ForeColor.RGB = vbBlue
.DataLabel.Text = 0
End If
'## Use a white font which is more legible on the dark fill colors '
.DataLabel.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = vbWhite
End With
Next
End With
Next
End Sub
每個數據點在圖表中將是相同的大小(我認爲這是你想要的屏幕截圖)。這個大小的計算方法是將表格中的行數除以1,例如,對於6行,它將是0.166666667
,這樣堆疊的列全部增加到100%。
值標籤被覆蓋,並指定爲1或0
標誌值的顏色是紅色或藍色,根據1或0的值I取得的字體顏色白色,以便將更清晰地對付藍色&紅色填充。
這太棒了。非常感謝。 – zgall1
結果下面可以使用,也許與直覺相反,堆積條形圖圖表(無VBA)來實現(和從默認調整其他許許多多設置!):
編輯在迴應置評請求進一步的細節
一些被要求可能調整爲默認設置(可能不是全部!):
國界
數據系列格式應設置邊框顏色實線(顏色可能默認爲黑色,透明度爲0%)和邊框樣式,以約3磅(或同等學歷,其餘部分可能是默認值)兩個Binary Flag
和Series1
。對於Series1
數據點
顏色
數據系列格式應該是填充,實體填充顏色:紅色和透明度0%(Binary Flag
可能默認爲藍色,而不是需要調整)。
格式軸
對於X軸,軸選項都設置爲固定,與值最小值:0,最大:1,專業:1,次要:1和主要刻度線類型:,次要刻度線類型:和軸標籤:全部設置爲無。縱軸交叉:設定爲約0.75。
對於Y軸,線條顏色設置爲無線。
圖例
刪除。
系列選項
設置爲系列重疊分居100%,間隔寬度沒有間隙(0%)與繪圖系列默認爲主座標軸。
大小 將右側圖表邊框向左拖動以適合。
替代
雖然或許與條件格式更容易(提供排序排列順序是相反的):
什麼數據創建圖表中的右欄? –
它看起來像http://i.imgur.com/UfRqkUi.gif – zgall1
好的。那麼,假設我可以像這樣重新安排數據表是安全的:http://imgur.com/iln3A0p –