Highcharts-10-饼图颜色设置

2021-03-07 17:50:48 浏览数 (1)

Highcharts-10-饼图颜色设置

本文中介绍的是饼图里颜色的设置问题,主要是:

  • 饼图区域的单一颜色
  • 饼图区域的多样颜色

单一颜色

效果

每个区块中的颜色是相同的:

代码

实现上面的效果主要是通过'color': 'Highcharts.getOptions().colors[0]方法。当colors[i]中的i取相同的值,则颜色会相同。

代码语言:javascript复制
# -*- coding: utf-8 -*-

"""
说明:绘制单色饼图
作者:Peter
"""

import datetime
from highcharts import Highchart

H = Highchart(width=850, height=400)

data = [
        {'name':'Firefox',   # 名称设置
         'y': 45.0,  # 具体设置
         'color': 'Highcharts.getOptions().colors[0]',  # 颜色获取,全部用0号颜色则最终图形的颜色是一致的
        },
        {'name':'IE',
         'y':26.8,
         'color': 'Highcharts.getOptions().colors[0]',
        },
        {'name': 'Chrome',
         'y': 12.8,
         'color': 'Highcharts.getOptions().colors[0]',
         'sliced': True,
         'selected': True},
        {'name':'Safari',
         'y': 8.5,
         'color': 'Highcharts.getOptions().colors[0]',
        },
        {'name':'Opera',
         'y': 6.2,
         'color': 'Highcharts.getOptions().colors[0]',
        },
        {'name':'其他',
         'y': 0.7,
         'color': 'Highcharts.getOptions().colors[0]',
        }
    ]

# 配置项
options =  {  # 主标题
    'title': {
        'text': '2014 年某网站各浏览器访问量占比'
    },
    'tooltip': {
        'pointFormat': '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    'plotOptions': {
        'pie': {
            'allowPointSelect': True,
            'cursor': 'pointer',
            'dataLabels': {
                'enabled': True,
                'format': '<b>{point.name}</b>: {point.percentage:.1f} %',
                'style': {
                    'color': "(Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'"
                }
            }
        }
    }
}


# 对颜色的单独设置
categories = ['Firefox','IE','Chrome','Safari','Opera','其他']
colors = []

for i in range(len(data)):
    colors.append({
        'name': categories[i],
        'y': data[i]['y'],
        'color': data[i]['color']
    })


# 添加设置
H.set_dict_options(options)

# 添加数据、图形类别、名称
H.add_data_set(data, 'pie', "浏览器占比")

H

核心代码的位置:

不同颜色

效果1

每个区块的颜色是不同的

代码
代码语言:javascript复制
# -*- coding: utf-8 -*-

"""
说明:绘制单色饼图
作者:Peter
"""

import datetime
from highcharts import Highchart

H = Highchart(width=850, height=400)

data = [
        {'name':'Firefox',   # 名称设置
         'y': 45.0,  # 具体设置
         'color': 'Highcharts.getOptions().colors[0]',  # 颜色获取,全部用0号颜色则最终图形的颜色是一致的
        },
        {'name':'IE',
         'y':26.8,
         'color': 'Highcharts.getOptions().colors[1]',
        },
        {'name': 'Chrome',
         'y': 12.8,
         'color': 'Highcharts.getOptions().colors[2]',
         'sliced': True,
         'selected': True},
        {'name':'Safari',
         'y': 8.5,
         'color': 'Highcharts.getOptions().colors[3]',
        },
        {'name':'Opera',
         'y': 6.2,
         'color': 'Highcharts.getOptions().colors[4]',
        },
        {'name':'其他',
         'y': 0.7,
         'color': 'Highcharts.getOptions().colors[6]',
        }
    ]

# 配置项
options =  {
    'title': {
        'text': '2014 年某网站各浏览器访问量占比'
    },
    'tooltip': {
        'pointFormat': '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    'plotOptions': {
        'pie': {
            'allowPointSelect': True,
            'cursor': 'pointer',
            'dataLabels': {
                'enabled': True,
                'format': '<b>{point.name}</b>: {point.percentage:.1f} %',
                'style': {
                    'color': "(Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'"
                }
            }
        }
    }
}


# 对颜色的单独设置
categories = ['Firefox','IE','Chrome','Safari','Opera','其他']
colors = []

for i in range(len(data)):
    colors.append({
        'name': categories[i],
        'y': data[i]['y'],
        'color': data[i]['color']
    })


# 添加设置
H.set_dict_options(options)

# 添加数据、图形类别、名称
H.add_data_set(data, 'pie', "浏览器占比")

H

核心代码如下:

效果2

部分区域的颜色是相同的

代码
代码语言:javascript复制
# -*- coding: utf-8 -*-

"""
说明:绘制多色饼图
作者:Peter
"""

import datetime
from highcharts import Highchart

H = Highchart(width=850, height=400)

data = [
        {'name':'Firefox',   # 名称设置
         'y': 45.0,  # 具体设置
         'color': 'Highcharts.getOptions().colors[0]',  # 颜色获取,全部用0号颜色则最终图形的颜色是一致的
        },
        {'name':'IE',
         'y':26.8,
         'color': 'Highcharts.getOptions().colors[0]',
        },
        {'name': 'Chrome',
         'y': 12.8,
         'color': 'Highcharts.getOptions().colors[1]',
         'sliced': True,
         'selected': True},
        {'name':'Safari',
         'y': 8.5,
         'color': 'Highcharts.getOptions().colors[1]',
        },
        {'name':'Opera',
         'y': 6.2,
         'color': 'Highcharts.getOptions().colors[2]',
        },
        {'name':'其他',
         'y': 0.7,
         'color': 'Highcharts.getOptions().colors[2]',
        }
    ]

# 配置项
options =  {  # 主标题
    'title': {
        'text': '2014 年某网站各浏览器访问量占比'
    },
    'tooltip': {
        'pointFormat': '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    'plotOptions': {
        'pie': {
            'allowPointSelect': True,
            'cursor': 'pointer',
            'dataLabels': {
                'enabled': True,
                'format': '<b>{point.name}</b>: {point.percentage:.1f} %',
                'style': {
                    'color': "(Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'"
                }
            }
        }
    }
}


# 对颜色的单独设置
categories = ['Firefox','IE','Chrome','Safari','Opera','其他']
colors = []

for i in range(len(data)):
    colors.append({
        'name': categories[i],
        'y': data[i]['y'],
        'color': data[i]['color']
    })

# 添加设置
H.set_dict_options(options)

# 添加数据、图形类别、名称
H.add_data_set(data, 'pie', "浏览器占比")

H

3D dount图(甜甜圈图)

效果

甜甜圈图的颜色整体会更亮丽

代码
代码语言:javascript复制
# -*- coding: utf-8 -*-
"""
Highcharts Demos
3D donut: http://www.highcharts.com/demo/3d-pie-donut
"""

# 导入库和实例化
from highcharts import Highchart
H = Highchart(width=550, height=400)


options = {
    'chart': {  # 设置图表类型
        'type': 'pie',
        'options3d': {  # 开启3d效果
            'enabled': True,
            'alpha': 45
        }
    },
    'title': {  # 主标题
        'text': "Contents of Highsoft's weekly fruit delivery"
    },
    'subtitle': {  # 副标题
        'text': '3D donut in Highcharts'
    },
    'plotOptions': {
        'pie': {  # 饼图大小和深度
            'innerSize': 100,
            'depth': 45
        }
    },
}

# 准备数据
data = [
    ['Bananas', 8],
    ['Kiwi', 3],
    ['Mixed nuts', 1],
    ['Oranges', 6],
    ['Apples', 8],
    ['Pears', 4],
    ['Clementines', 4],
    ['Reddish (bag)', 1],
    ['Grapes (bunch)', 1]
]

# 添加设置
H.set_dict_options(options)

# 添加数据、图形类别、名称
H.add_data_set(data, 'pie', 'Delivered amount')

H

0 人点赞