pyecharts第二步—HeatMap
日更?高产似那啥,今儿我们又开始新的一篇了嗷!!!赶快准备好小板凳,带上瓜子花生,准备发车了。
看今日的标题HeatMap大家可能就直到今儿要画什么图了。没错就是那个热力图!其实热力图不管是在生活中,还是在平常的数据分析处理中我们都经常可以看到
例如我们上一次画的那个Calendar图中,其实也加入了HeatMap:
又或者是有关温度的热力图,所以对于热力图来说,我们其实已经很常见了,那我们怎么自己去画出来自己想要的热力图,就是今儿的正菜咯
HeatMap前置工作
既然上面已经给大家看了一下大概的HeatMap效果,那我们就要来看看如何去创建HeatMap了。
既然HeatMap是pyecharts里面东西,那我们肯定是要导入相对应的包了
from pyecharts.charts import HeatMap
from pyecharts import options as opts
import random
别人为什么有个奇奇怪怪的random,因为因为懒得找数据了
原神,启动!好了好了,好像又混进来了什么奇奇怪怪的东西。
既然有了random
的加入,我们就开始创建我们的数据了
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
这个是pyecharts中文文档中给出的样例代码,依旧是list省略形式的for循环语句,如果大家比较熟悉的话自行使用,当然不太熟的话小编也会给出便于理解的代码形式。
value1 = []
for i in range(24):
for j in range(7):
value1.append([i, j, random.randint(0, 50)])
大致的数据就是差不多处理完了,但是还剩下一个横纵坐标轴的设置了
hours = [
"12a",
"1a",
"2a",
"3a",
"4a",
"5a",
"6a",
"7a",
"8a",
"9a",
"10a",
"11a",
"12p",
"1p",
"2p",
"3p",
"4p",
"5p",
"6p",
"7p",
"8p",
"9p",
"10p",
"11p",
]
days = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"]
这个比较冗杂,也可以使用for循环去进行添加,或者根据具体实际来进行设置,这就是绘制热力图的所有前置工作了,我们就可以端上我们的正菜了。
HeatMap的方法属性介绍
我们就先不直接给出代码了,我们先根据pyecharts中文文档中的代码先讲解,然后我们再来给出实际代码
初始化HeatMap
根据pyecharts中文文档给出的代码是这样的
class HeatMap(
# 初始化配置项,参考 `global_options.InitOpts`
init_opts: opts.InitOpts = opts.InitOpts()
)
在这里我们就碰到了我们的老朋友init_opts属性了,那我们就再回顾一下init_opts吧
class InitOpts(
# 图表画布宽度,css 长度单位。
width: str = "900px",
# 图表画布高度,css 长度单位。
height: str = "500px",
# 图表 ID,图表唯一标识,用于在多图表时区分。
chart_id: Optional[str] = None,
# 渲染风格,可选 "canvas", "svg"
# # 参考 `全局变量` 章节
renderer: str = RenderType.CANVAS,
# 网页标题
page_title: str = "Awesome-pyecharts",
# 图表主题
theme: str = "white",
# 图表背景颜色
bg_color: Optional[str] = None,
# 远程 js host,如不设置默认为 https://assets.pyecharts.org/assets/"
# 参考 `全局变量` 章节
js_host: str = "",
# 画图动画初始化配置,参考 `global_options.AnimationOpts`
animation_opts: Union[AnimationOpts, dict] = AnimationOpts(),
)
这都是截取上次Calendar的文案,小编太懒了
在这里我么依旧需要注意的是什么呢?init_opts中的三个属性
-
width
:这是来设置图表的宽度的,可以使用px, rpx, %
至于这三个的具体是啥,可以参考上一次的blog嗷~也可以去看看html的一堆东西 -
height
:这是来设置图表的高度的,可以使用px, rpx, %
至于这三个的具体是啥,也可以参考上一次的blog嗷~也可以去看看html的一堆东西 -
bg_color
:这个是用于设置背景的颜色的,可以使用十六进制来赋值,例如#ffffff
,也可以使用rgb来进行设置,例如rgb![请添加图片描述]() (0,0,0)
这就是init_opts中常见的三个属性,剩余的会与html渲染有关,但是我们最后是想着下载图片,所以其他的我们就暂时步过多的讲解。
下面就给出小编的代码(仅供参考!!!!!!)
heatmap = HeatMap(init_opts=opts.InitOpts(width='1000px', height='400px', bg_color='(0,0,0)'))
至此!初始化就讲解完毕咯!!!
HeatMap的add_xaxis以及add_yaxis
不知道为什么,在pyecharts的中文文档中,HeatMap这里面没有add_xaxis,但是在其给的样例代码中却包含了add_xaxis这个方法,所以小编在这里还是讲解一下
其实可能是因为HeatMap
中的add_xaxis和add_yaxis过于的相似了,所以考虑了一下我们仅讲一个,也就是和pyecharts中文文档对应只讲解一下add_yaxis
函数
def add_yaxis(
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
series_name: str,
# Y 坐标轴数据
yaxis_data: types.Sequence[types.Union[opts.HeatMapItem, dict]],
# 系列数据项
value: types.Sequence[types.Union[opts.HeatMapItem, dict]],
# 是否选中图例
is_selected: bool = True,
# 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
xaxis_index: Optional[Numeric] = None,
# 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
yaxis_index: Optional[Numeric] = None,
# 标签配置项,参考 `series_options.LabelOpts`
label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
# 标记点配置项,参考 `series_options.MarkPointOpts`
markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
# 标记线配置项,参考 `series_options.MarkLineOpts`
markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
# 提示框组件配置项,参考 `series_options.TooltipOpts`
tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
# 图元样式配置项,参考 `series_options.ItemStyleOpts`
itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)
我们常用的有series_name,yaxis_data,value
-
series_name
:这是这一组数据所对应的名字,例如这个数据是时间,温度等等,但是热力图似乎对于这个没有太多的需求,所以我们后面都是使用空字符串去设置(注意!!!
) -
yaxis_data
:这个就是设置y轴的数据,可以对比与坐标轴的纵坐标等等,而对于add_xaxis
是通过设置xaxis_data
来设置x轴的数据。 -
value
:这个就是我们的数据内容了,数据使用的是list
属性,而list
中的元素也是list
类型,元素的基本都是[i,j,value]
后面当然还有mark
类型的的元素,例如markpoint
和markline
,这两个我们在之后折线图的时候再来细讲(因为小编也只在折线图里面用过
)
这是设置HeatMap
的方法和属性,我们还有全局设置,我们在下面看看属性
-
title_opts
:这是设置标题的属性,当然也有副标题可以设置 -
visualmap_opts
:这个是范围图表,在之前的Calendar有部分的讲解,大家感兴趣的可以移步到Calendar那一个推文
那我们就给出以下最后的代码然后大概讲解以下吧~
python代码给出及讲解
from pyecharts.charts import HeatMap
from pyecharts import options as opts
import random
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
# value1 = []
# for i in range(24):
# for j in range(7):
# value1.append([i, j, random.randint(0, 50)])
hours = [
"12a",
"1a",
"2a",
"3a",
"4a",
"5a",
"6a",
"7a",
"8a",
"9a",
"10a",
"11a",
"12p",
"1p",
"2p",
"3p",
"4p",
"5p",
"6p",
"7p",
"8p",
"9p",
"10p",
"11p",
]
days = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"]
heatmap = HeatMap(init_opts=opts.InitOpts(width='1000px', height='400px', bg_color='rgb(255,255,255)'))
heatmap.add_xaxis(xaxis_data=hours)
heatmap.add_yaxis(series_name='',
yaxis_data=days,
value=value,
label_opts=opts.LabelOpts(is_show=True,
position='inside'))
heatmap.set_global_opts(
title_opts=opts.TitleOpts(title='第一个HeatMap'),
visualmap_opts=opts.VisualMapOpts(),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
toolbox_opts=opts.ToolboxOpts(is_show=True),
)
heatmap.render()
现在就开始来讲以下这里的代码咯~
在开始创建heatmap对象之前都是数据的创建,就不再多进行赘述下面就是讲heatmap后面的设置
-
heatmap
创建的时候设置init_opts
-
add_xaxis
设置横坐标 -
add_yaxis
设置纵坐标,在这里还有设置value
数值,还有series_name
,当然series_name
如上文所说,不能不设置,这是必设置的,但是可以设置空字符串,还有一个label_opts
,这个就是上述样例图中每个表格中的数字,is_show
就是设置是否展示。 -
set_global_opts
设置全局,例如title_opts
设置标题,visualmap_opts
设置视觉映射,当然还有我们之前的老朋友就是tooltip_opts
与toolbos_opts
这两个是我们下载图表的重要东西,无论是否需要下载都可以进行设置,比较html的交互会更好
所以今儿的博客就到这里结束咯,如果有什么疑问,欢迎评论嗷。