我想创建下面链接的图表。我的数据是用二进制标志(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.我将字体颜色设置为白色,以便对蓝色和蓝色更清晰。红色填充。
答案 1 :(得分:0)
下面的结果可以通过图表(没有VBA)来实现,也许可以直观地反击堆积条形图(并从默认值中调整其他设置!):
编辑以回复评论请求进一步的详细信息
某些(可能不是全部!)默认设置可能需要的调整:
<强>边界强>
对于Binary Flag
和{{1,格式数据系列应设置为边框颜色实线(颜色可以默认为黑色,透明度为0%)和边框样式为约3 pt(或等效,休息可能是默认值) }}
<强>颜色强>
Series1
数据点的格式数据系列应为填充,实心填充,颜色:红色和透明度0%(Series1
可能默认为蓝色,不需要调整)。
格式轴
对于X轴,轴选项全部设置为固定,值最小值:0,最大值:1,主要:1,次要:1和主要刻度标记类型:,次要刻度标记类型:和轴标签:全部设置为无。垂直轴交叉:设置为约0.75。
对于Y轴,线条颜色设置为无线。
<强>图例强>
删除。
系列选项
设置为系列重叠分离100%,间隙宽度无间隙(0%)与绘图系列默认为主轴。
<强>尺寸强> 将右侧图表边框向左拖动以适合。
替代
虽然使用条件格式可能更容易(如果排序排序顺序相反):