使用 Plotly 定义饼图切片颜色

Defining pie chart slice colors with Plotly

我正在尝试为某些 values/slices 创建特定的颜色,但找不到太多关于它的文档。我知道条形图等是可能的,甚至 Javascript 中的饼图也是可能的,并且他们的示例之一有颜色选项,但修改它对我没有任何作用。

这是我的:

pie_chart = {
             'data': 
                     [
                     {     'labels': ['V0', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9'],
                           'values': [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9],
                           'marker': {'colors': [
                                                 'rgb(0, 204, 0)',  # Green
                                                 'rgb(255, 255, 0)',  # Yellow
                                                 'rgb(118, 17, 195)',  # Purple
                                                 'rgb(0, 48, 240)'  # Blue
                                                 'rgb(240, 88, 0)'  # Orange
                                                 'rgb(215, 11, 11)'  # Red
                                                 'rgb(11, 133, 215)'  # Light Blue
                                                 'rgb(0, 0, 0)'  # Black
                                                 'rgb(0, 0, 0)'
                                                 'rgb(0, 0, 0)'
                                                ]
                                     },
                           'type': 'pie',
                           'name': "Gym grades",
                           'hoverinfo':'label+percent+name',
                           'textinfo':'none'
                      }
                      ],

             'layout': {'title': 'Grades in gym'}

             }

    url = py.plot(pie_chart, validate=False, filename='Gym Grades')

问题:颜色没有改变('marker' 无效)

问题:是否有其他方法可以修改颜色

问题可能是默认情况下所有值 v0、v1、... 都按降序排列,因此最大值排在第一位。它们按 "applying" 颜色排序。因此,根据您的颜色定义,值 #4 为蓝色,可能不会排在第四位。

解决方案是手动排序您的数据,然后使用 sort 属性关闭自动排序

Plotly 在隐藏错误和自动补全缺失颜色方面做得很好。在彩色饼图的工作示例下方,几乎没有遗漏逗号。

正如 Meglio 提供的那样,sort 属性可以设置为 false,但这只会改变图例和图表的顺序。颜色由数组的顺序设置。

pie_chart = {
  'data': [{
    'labels': ['V0', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9'],
    'values': [55, 22, 31, 32, 33, 45, 44, 42, 12, 67],
    'marker': {
      'colors': [
        'rgb(0, 204, 0)',
        'rgb(255, 255, 0)',
        'rgb(118, 17, 195)',
        'rgb(0, 48, 240)',
        'rgb(240, 88, 0)',
        'rgb(215, 11, 11)',
        'rgb(11, 133, 215)',
        'rgb(0, 0, 0)',
        'rgb(0, 0, 0)',
        'rgb(0, 0, 0)'
      ]
    },
    'type': 'pie',
    'name': "Gym grades",
    'hoverinfo': 'label+percent+name',
    'sort': false,
  }],

  'layout': {
    'title': 'Grades in gym'
  }

}

Plotly.newPlot('plot', pie_chart.data, pie_chart.layout);
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<div id="plot"> </div>