【问题标题】:How can I control the color of individual pie chart segments in Excel?如何控制 Excel 中各个饼图段的颜色?
【发布时间】:2011-05-30 17:23:10
【问题描述】:

我希望能够以编程方式控制饼图中各部分的颜色。理想情况下,我的图表将基于一个 3 列的表,其中的列是:数据值、标签和饼图颜色值。颜色值与在 Access 表单属性中看到的数字相同。

谢谢,

史蒂夫

【问题讨论】:

    标签: excel colors charts controls


    【解决方案1】:
    Sub a()
        ActiveSheet.ChartObjects("Chart 1").Activate
        ActiveChart.SeriesCollection(1).Points.Item(1).Interior.ColorIndex = 7
    End Sub  
    

    你可以通过我在This Other Answer发布的技巧来学习ColorIndex所代表的颜色

    【讨论】:

    • .ColorIndex 是 Excel 2003 中的一种过时方法,当时 Excel 的颜色受到更多限制。可以使用.Color,直接传入RGB值。
    【解决方案2】:

    也许这几行有什么?

    Dim ws As Worksheet
    Dim sh As Shape
    
    Set ws = Sheet2
    Set sh = ws.Shapes.AddChart '.Select
    
    With sh.Chart
        .ChartType = xlPie
        .SetSourceData Source:=Range("Sheet1!$A$1:$B$3")
    
        For i = 1 To .SeriesCollection(1).Points.Count
            With .SeriesCollection(1).Points(i).Format.Fill
                .ForeColor.RGB = Range("C" & i).Interior.Color
    
                .Solid
            End With
        Next
    End With
    

    这将允许您使用填充按钮向单元格添加颜色并将其用于段。

    【讨论】:

      【解决方案3】:

      首先,我知道这是可以做到的。 BeGraphic 有一个免费的 Excel 插件,它具有在电子表格中设置图表元素颜色的功能。见:

      这使用了一个插件。我必须说结果令人印象深刻。就我自己而言,我需要更多的 Excel-native,许多其他人会发现这个选项是顶级的。

      Remou 中的 VB 选项和 begraphic 的插件可以做到这一点。对我来说,或者至少是当前的项目,我需要一个基于 Excel 的解决方案(尽可能多地实用和可能)。与此同时,您和我本人可以通过 VB、VBA、.Net 和/或宏找到解决方法。访问 Jon P 的网站了解可用选项。

      如果我发现 'more' - 我会在此查询中将其传回。

      阿罗哈
             会

      【讨论】:

        【解决方案4】:

        也许它可以使用 VBA 来完成,但在这里我提出另一种解决方案,让您使用 JavaScript 来做到这一点。您可以使用名为 Funfun 的免费 Excel 加载项,它允许您直接在 Excel 中使用 JavaScript 代码。话虽如此,您可以使用 HighCharts.js 或 D3.js 等库来绘制饼图并单独控制颜色。这是我根据您的描述制作的示例。

        饼图不同部分的颜色由电子表格中第三列的数据决定。在这个例子中,我使用 HighCharts.js 来控制绘制这个图表。控制颜色的具体代码如下所示。

          var pieColors =[];
          for(var i=1;i<data.length;i++){
            switch(parseInt(data[i][2])){
              case 0:
                pieColors.push('blue');
                break;
              case 1:
                pieColors.push('green');
                break;
              case 2:
                pieColors.push('orange');
                break;
              case 3:
                pieColors.push('purple');
                break;
              case 4:
                pieColors.push('red');
                break;
              case 5:
                pieColors.push('brown');
                break;
            }
          }
        

        在这个例子中,我只是手动选择了六种颜色,但是你可以很容易地通过 JavaScript 代码生成随机颜色或特定范围内的颜色。

        Funfun 插件还有一个在线编辑器,您可以在其中使用您的代码和结果进行测试。您可以在下面的链接中查看详细代码和此示例。

        https://www.funfun.io/1/#/edit/5a4f4680c3a8a526caeec989

        一旦您对结果感到满意,您可以使用上面的链接轻松地将结果加载到 Excel 中。当然,首先,您需要通过 Insert - Office Add-ins 将 Funfun 加载项添加到 Excel 中。下面是一些屏幕截图,展示了如何将示例加载到 Excel 中。

        披露:我是 Funfun 的开发者

        【讨论】:

        • 学习一点 VBA(它是 Excel 不可或缺的一部分)来修改原生 Excel 图表,可能比使用非 Excel JavaScript 方法来修改非 Excel 图表更好。其他几个答案显示了 VBA 方法。
        • 对于一些问题,是的。但是使用 JavaScript 的优点是能够使用 3rd 方库,这将使在 Excel 中绘制一些复杂的图表变得更加容易。我确实提到它可以在一开始使用 VBA 来完成,我只是提出了另一种观点:)
        猜你喜欢
        • 1970-01-01
        • 2010-12-27
        • 2022-01-10
        • 2018-01-23
        • 2014-07-23
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多