微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据列值对 xy 散点图中的点进行着色后,获取数据点的错误颜色?

如何解决根据列值对 xy 散点图中的点进行着色后,获取数据点的错误颜色?

我已经在我的代码基础上解决了这个问题:How can I color dots in a xy scatterplot according to column value?

但是,我逐个上色后,得到的颜色并不完全准确。

编辑:我想我已经找到了问题所在。我有切片器来过滤我在 Sheet 1 上的散点图,其中数据在 Sheet 3 上。

例如,我的未过滤数据的前 6 个数据点是“B/L/B/L/B”,以及相应的“蓝/绿/蓝/绿/蓝”。然而,在我申请过滤器只显示应该只显示绿色的“L”之后,前 6 个数据点仍然显示“蓝色/绿色/蓝色/绿色/蓝色”。我应该如何解决这个问题?

Window.after(1,self.Move_Ball)

运行代码后,我注意到我的一些标记为“L”的数据点也是蓝色的。对于我标记为“B”的数据点,反之亦然。

谁能告诉我代码错在哪里?

解决方法

如果您有可以过滤掉的行,那么您需要循环输入范围而不是系列点:

Sub ColorScatterPoints()

    Dim cht As Chart
    Dim srs As Series
    Dim valRange As Range,c As Range,i As Long
    Dim myColor As Long

    Set cht = ThisWorkbook.Worksheets(1).ChartObjects("Speed/Cons Chart").Chart
    Set srs = cht.SeriesCollection("with Full/Eco")

   '## Get the series Y-Values range:
    Set valRange = Range(Split(srs.Formula,",")(2))  '#Column G / 7

    'loop over the series Y-value range
    For Each c In valRange.Cells
        If Not c.EntireRow.Hidden Then 'check row is not filtered out
            i = i + 1                  'increment datapoint index
            Select Case c.Offset(0,-5).Value
                Case "L": myColor = RGB(112,173,71)
                Case "B": myColor = RGB(68,114,196)
                Case Else: myColor = RGB(150,150,150) '<< add a default
            End Select
            With srs.Points(i).Format.Fill 'format the i'th point
                .Visible = msoTrue
                .ForeColor.RGB = myColor
            End With
        End If
    Next c
    
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。