sjvisualizer 是一个可以画各种动态图的包。
该文阐述了额外属性的参数详解,包括在一张图上画多种的sub-plot、条形相关动态图、饼状相关动态图、折线相关动态图、区域相关动态图的额外参数。
动态绘图【上】介绍了基础动态图的绘制,包括动态折线图、动态饼形图、动态区域图、动态柱形图。
来源其官方文档。
文章目录
- 下列函数使用方法
- 绘制所有图形的画布(背景等设置)
- sub-plot类
- 条形相关动态图个性化
- 饼状相关动态图个性化
- 折线相关动态图个性化
- 区域相关动态图个性化
下列函数使用方法
需添加sjvisualizer包,先使用pip install sjvisualizer
安装好该包,在需要用到的代码部分import
import sjvisualizer
...
sjvisualizer.plot.bar(excel='',
title='',
unit='')
下列是更改绘图的属性,需要在绘图之前额外更改这些包属性。
绘制所有图形的画布(背景等设置)
sjvisualizer.Canvas.calc_spacing(value, current_spacing, n)
class sjvisualizer.Canvas.canvas(width=None, height=None, bg=(255, 255, 255), colors={})
参数: bg(长度为 3 的整数元组)背景颜色(RGB),默认为 (255, 255, 255)(白色)
add_logo(logo) 用于添加徽标的辅助函数
参数: logo – 徽标的图像名称,绝对或相对路径:字符串类型
add_sub_plot(sub_plot) 用于向此画布添加子图的函数
参数: sub_plot (sjvisualizer.Canvas.sub_plot| sub_plot 对象
add_sub_title(text, color=(0, 0, 0)) 用于向动画添加子标题的辅助函数。
参数 | 类型 | 详细信息 |
---|---|---|
text | 字符串类型 | 显示在可视化顶部的子标题 |
color | 长度为 3 的整数元组 | RGB 中的子标题颜色,默认为 (0, 0, 0) 黑色 |
add_time(df, time_indicator=‘year’, color=(150, 150, 150)) 用于向可视化添加时间戳的辅助函数
参数 | 类型 | 详细信息 |
---|---|---|
df | pandas.DataFrame | 将时间戳作为索引保存的 pandas 数据框 |
time_indicator | str | 确定时间戳的格式,可能的值:“day”、“month”、“year”,默认为“year” |
color | 长度为 3 的整数元组 | RGB 中的文本颜色,默认为 (150, 150, 150) |
add_title(text, color=(0, 0, 0)) 用于向动画添加标题的辅助函数。
参数 | 类型 | 详细信息 |
---|---|---|
text | str | 显示在可视化顶部的标题 |
color | 长度为 3 的整数元组 | RGB 中的标题颜色,默认为 (0, 0, 0) 黑色 |
play(df=None, fps=30, record=False, width=2560, height=1440, file_name=‘output.mp4’)
动画的主循环。此函数将为 pandas df 中设置的每个时间步骤编排动画
参数 | 类型 | 详细信息 |
---|---|---|
df | pandas.DataFrame | 要制作动画的 pandas 数据框 |
fps | int | 动画的帧速率,默认为每秒 30 帧 |
record | boolean | 如果设置为 True,则将录制屏幕,这将严重影响高分辨率屏幕上的性能 |
height | int | 如果 record 设置为 True,则这是正在录制的窗口的高度。 默认为全屏。 |
file_name | str | 如果 record 设置为 True,则这是输出文件的名称。默认为 output.mp4。 |
set_decimals(decimals) update(time) 动画每一帧都会调用的更新函数。
参数: time (datetime 对象)与帧相对应的时间对象。
sjvisualizer.Canvas.format_date(time, time_indicator, format='Europe')
sjvisualizer.Canvas.format_value(number, decimal=3)
sjvisualizer.Canvas.hex_to_rgb(h)
sjvisualizer.Canvas.load_image(path, x, y, root, name)
sub-plot类
class sjvisualizer.Canvas.sub_plot(canvas=None, width=None, height=None, x_pos=None, y_pos=None,
start_time=None, text=None, df=None, multi_color_df=None,
anchor='c', sort=True, colors={}, root=None,
display_percentages=True, display_label=True, title=None,
invert=False, origin='s', display_value=True, font_color=(0, 0, 0),
back_ground_color=(255, 255, 255), events={}, time_indicator='year',
number_of_bars=None, unit='', x_ticks=4, y_ticks=4,
log_scale=False, only_show_latest_event=True, allow_decrease=True,
format='Europe', draw_points=True, area=True,
color_bar_color=[[100, 100, 100], [255, 0, 0]], **kwargs)
所有图表类型都继承自的基本 sub_plot 类。
参数 | 类型 | 详细信息 |
---|---|---|
canvas | tkinter.Canvas | 用于绘制图形的 tkinter 画布 |
width | int | 图的宽度(以像素为单位) |
height | int | 图的高度(以像素为单位) |
x_pos | int | 此图左上角像素的 x 位置 |
y_pos | int | 此图左上角像素的 y 位置 |
font_color | 长度为 3 的整数元组 | 字体颜色 |
load_image()
save_colors()
set_root(root)
update(time)
sjvisualizer.Canvas.truncate(n, decimals=1)
条形相关动态图个性化
class sjvisualizer.BarRace.bar(name=None, canvas=None, root=None, target_y=0, x=100, size=10,
width=0, radius=0, value=0, unit=None, display_value=True,
multi_colors=None, color_data=None, font_color=(0, 0, 0), mode=None,
colors=None, decimal_places=0, font_scale=1, graph=None)
delete()
draw(target_y=0, width=0, img=None, value=0, color_data=None)
update(target_y=0, width=0, value=0, color_data=None)
class sjvisualizer.BarRace.bar_race(canvas=None, width=None, height=None, x_pos=None,
y_pos=None, start_time=None, text=None, df=None,
multi_color_df=None, anchor='c', sort=True, colors={}, root=None,
display_percentages=True, display_label=True, title=None,
invert=False, origin='s', display_value=True, font_color=(0, 0, 0),
back_ground_color=(255, 255, 255), events={},
time_indicator='year', number_of_bars=None, unit='', x_ticks=4,
y_ticks=4, log_scale=False, only_show_latest_event=True,
allow_decrease=True, format='Europe', draw_points=True,
area=True, color_bar_color=[[100, 100, 100], [255, 0, 0]],
**kwargs)
参数 | 类型 | 详细信息 |
---|---|---|
canvas | tkinter.Canvas | 用于绘制图形的 tkinter 画布 |
width | int | 绘图宽度(以像素为单位),默认值取决于屏幕分辨率 |
height | int | 绘图高度(以像素为单位),默认值取决于屏幕分辨率 |
x_pos | int | 此绘图左上角像素的 x 位置,默认值取决于屏幕分辨率 |
y_pos | int | 此绘图左上角像素的 y 位置,默认值取决于屏幕分辨率 |
df | pandas.DataFrame | 保存数据的 pandas 数据框 |
colors | 保存每个数据类别的颜色信息的字典。 | 字典的键应与数据类别(列)的名称相对应。字典的值应为颜色的 RGB 值:{“United States”: [ 23, 60, 225 ] },默认值为 {} |
unit (str | 可视化值的单位,默认为“” | |
back_ground_color | 长度为 3 的整数元组 | 背景颜色,要隐藏超出顶部 X 的条形,将在可视化底部绘制一个正方形。通常,您希望此正方形与背景颜色相匹配。默认值为 (255,255,255) |
font_color | 长度为 3 的整数元组 | 字体颜色,默认值为 (0,0,0) |
sort | 布尔值 | 是否应根据值对此图表的元素进行排序?默认值为 True |
number_of_bars | 整数 | 动画中显示的条形图数量,默认值为 10,除非数据类别少于 10 个 |
shift | 整数 | 将垂直条纹向下移动的像素数,用于隐藏超出顶部 X 的条形图。如果使用背景图像,则可以使用此方法,以避免难看的白色条形图覆盖背景图像。 |
font_scale | 浮点数 | 增加或减少 font_size。要将字体大小缩小 25%,请将此值设置为 0.75。 |
draw(time)
update(time)
class sjvisualizer.BarRace.bar_stripes(canvas, y_min, y_max, row, x, width, height, number_of_bars,
invert, allow_decrease=True)
draw(row)
update(row)
饼状相关动态图个性化
class sjvisualizer.PieRace.pie_plot(canvas=None, width=None, height=None, x_pos=None,
y_pos=None, start_time=None, text=None, df=None,
multi_color_df=None, anchor='c', sort=True, colors={}, root=None,
display_percentages=True, display_label=True, title=None,
invert=False, origin='s', display_value=True, font_color=(0, 0, 0),
back_ground_color=(255, 255, 255), events={},
time_indicator='year', number_of_bars=None, unit='', x_ticks=4,
y_ticks=4, log_scale=False, only_show_latest_event=True,
allow_decrease=True, format='Europe', draw_points=True,
area=True, color_bar_color=[[100, 100, 100], [255, 0, 0]],
**kwargs)
参数 | 类型 | 详细信息 |
---|---|---|
canvas | tkinter.Canvas | 用于绘制图形的 tkinter 画布 |
width | int | 绘图宽度(以像素为单位),默认值取决于屏幕分辨率 |
height | int | 绘图高度(以像素为单位),默认值取决于屏幕分辨率 |
x_pos | int | 此绘图左上角像素的 x 位置,默认值取决于屏幕分辨率 |
y_pos | int | 此绘图左上角像素的 y 位置,默认值取决于屏幕分辨率 |
df | pandas.DataFrame | 保存数据的 pandas 数据框 |
colors | 保存每个数据类别颜色信息的字典。 | 字典的键应与数据类别(列)的名称相对应。字典的值应为颜色的 RGB 值:{“United States”: [ 23, 60, 225 ] },默认值为 {} |
back_ground_color | 长度为 3 的整数元组 | 背景颜色。为了隐藏超出顶部 X 的条形,将在可视化的底部绘制一个正方形。通常您希望此方块与背景颜色相匹配。默认值为 (255,255,255) |
font_color | 长度为 3 的整数元组 | 字体颜色,默认值为 (0,0,0) |
sort | 布尔值 | 此图的值是否应柔化?True/False,默认值为 True |
折线相关动态图个性化
class sjvisualizer.LineChart.event(name=None, canvas=None, start_date=None, end_date=None,
font_color=(0, 0, 0), font_size=12, text_font='Microsoft JhengHei UI',
parent=None, event_color=(255, 255, 255))
draw()
update(date)
class sjvisualizer.LineChart.line(name=None, canvas=None, value=0, unit=None, font_color=(0, 0, 0),
colors=None, time=None, xaxis=None, yaxis=None, chart=None,
draw_points=False, line_width=None, label_at_end=True) draw(value, time)
remove_points()
update(value, time)
class sjvisualizer.LineChart.line_chart(canvas=None, width=None, height=None, x_pos=None,
y_pos=None, start_time=None, text=None, df=None,
multi_color_df=None, anchor='c', sort=True, colors={},
root=None, display_percentages=True, display_label=True,
title=None, invert=False, origin='s', display_value=True,
font_color=(0, 0, 0), back_ground_color=(255, 255, 255),
events={}, time_indicator='year', number_of_bars=None,
unit='', x_ticks=4, y_ticks=4, log_scale=False,
only_show_latest_event=True, allow_decrease=True,
format='Europe', draw_points=True, area=True,
color_bar_color=[[100, 100, 100], [255, 0, 0]], **kwargs)
构建动画区域图的类。就是在其他图上额外加上一个图。
参数 | 类型 | 详细信息 |
---|---|---|
canvas | tkinter.Canvas | 用于绘制图形的 tkinter 画布 |
width | int | 绘图宽度(以像素为单位),默认值取决于屏幕分辨率 |
height | int | 绘图高度(以像素为单位),默认值取决于屏幕分辨率 |
x_pos | int | 此绘图左上角像素的 x 位置,默认值取决于屏幕分辨率 |
y_pos | int | 此绘图左上角像素的 y 位置,默认值取决于屏幕分辨率 |
df | pandas.DataFrame | 保存数据的 pandas 数据框 |
colors | 保存每个数据类别的颜色信息的字典 | 字典的键应对应数据类别(列)的名称。字典的值应为颜色的 RGB 值:{ “United States”: [ 23, 60, 225 ] },默认为 {} |
font_color | 长度为 3 的整数元组 | 字体颜色,默认值为 (0,0,0) |
font_size | int | 字体大小,以像素为单位 |
draw_points | 布尔值 | 如果设置为 True,脚本将为每一行绘制标记,这可能会影响性能 |
time_indicator | str | 时间戳的格式,“日”、“月”、“年”,默认值为“年” |
events | 字典用于向折线图添加其他上下文 | 例如,按时间指示事件。 示例:events = { “{EVENT NAME}”: [“START DATE DD/MM/YYYY”, “END DATE DD/MM/YYYY”], “Event 1”: [“28/01/2017”, “28/01/2018”], “Event 2”: [“28/01/2019”, “28/01/2020”], “Last event”: [“28/05/2020”, “28/01/2021”] } |
event_color | tuple | 事件指示的颜色,默认值为 (225,225,225) |
draw_all_events | boolean | 默认情况下,只有标签会添加到最近的事件。将此值设置为 True 可保留所有事件的标签 |
line_width | int | 线的宽度 |
区域相关动态图个性化
class sjvisualizer.Total.total(canvas=None, width=None, height=None, x_pos=None, y_pos=None,
start_time=None, text=None, df=None, multi_color_df=None, anchor='c',
sort=True, colors={}, root=None, display_percentages=True,
display_label=True, title=None, invert=False, origin='s',
display_value=True, font_color=(0, 0, 0), back_ground_color=(255, 255, 255),
events={}, time_indicator='year', number_of_bars=None, unit='',
x_ticks=4, y_ticks=4, log_scale=False, only_show_latest_event=True,
allow_decrease=True, format='Europe', draw_points=True, area=True,
color_bar_color=[[100, 100, 100], [255, 0, 0]], **kwargs)
draw(time)
update(time)
class sjvisualizer.Legend.elem(name=None, canvas=None, y=0, unit='', font_color=(0, 0, 0), colors=None,
font=None, parent=None, display_values=False)
calc_position(target_y)
draw()
update(x, y, draw, value=0)
class sjvisualizer.Legend.legend(canvas=None, width=None, height=None, x_pos=None, y_pos=None,
start_time=None, text=None, df=None, multi_color_df=None,
anchor='c', sort=True, colors={}, root=None, display_percentages=True,
display_label=True, title=None, invert=False, origin='s',
display_value=True, font_color=(0, 0, 0), back_ground_color=(255, 255, 255),
events={}, time_indicator='year', number_of_bars=None, unit='',
x_ticks=4, y_ticks=4, log_scale=False, only_show_latest_event=True,
allow_decrease=True, format='Europe', draw_points=True, area=True, color_bar_color=[[100, 100, 100], [255, 0, 0]], **kwargs)
参数 | 类型 | 详细信息 |
---|---|---|
canvas | tkinter.Canvas | 用于绘制图形的 tkinter 画布 |
width | int | 绘图宽度(以像素为单位),默认值取决于屏幕分辨率 |
height | int | 绘图高度(以像素为单位),默认值取决于屏幕分辨率 |
x_pos | int | 此绘图左上角像素的 x 位置,默认值取决于屏幕分辨率 |
y_pos | int | 此绘图左上角像素的 y 位置,默认值取决于屏幕分辨率 |
df | pandas.DataFrame | 保存数据的 pandas 数据框 |
colors | 保存每个数据类别的颜色信息的字典 | 字典的键应对应数据类别(列)的名称。字典的值应为颜色的 RGB 值:{ “United States”: [ 23, 60, 225 ] },默认为 {} |
font_color | 长度为 3 的整数元组 | 字体颜色,默认值为 (0,0,0) |
font_size | int | 字体大小,以像素为单位 |
sort | 布尔值 | 是否应根据值对此图表的元素进行排序?默认值为 True |
display_values | boolean | 在图例末尾显示数据类别的值?默认值为 False |
unit | str | 可视化值的单位,默认为“” |