创建堆叠柱状图,展示每期周刊的内容分布 Args: issue_nos (list): 期号列表 articles (list): 文章数量列表 projects (list): 项目数量列表 audio_video (list): 音视频数量列表 hot_topics (list): 讨论话题数量列表 books (list): 赠书数量列表 color_map (dict): 内容类型与颜色的映射 Returns: B
(issue_nos, articles, projects, audio_video, hot_topics, books, color_map)
| 70 | return issue_nos, articles, projects, audio_video, hot_topics, books |
| 71 | |
| 72 | def create_bar_chart(issue_nos, articles, projects, audio_video, hot_topics, books, color_map): |
| 73 | """ |
| 74 | 创建堆叠柱状图,展示每期周刊的内容分布 |
| 75 | |
| 76 | Args: |
| 77 | issue_nos (list): 期号列表 |
| 78 | articles (list): 文章数量列表 |
| 79 | projects (list): 项目数量列表 |
| 80 | audio_video (list): 音视频数量列表 |
| 81 | hot_topics (list): 讨论话题数量列表 |
| 82 | books (list): 赠书数量列表 |
| 83 | color_map (dict): 内容类型与颜色的映射 |
| 84 | |
| 85 | Returns: |
| 86 | Bar: pyecharts Bar 图表对象 |
| 87 | """ |
| 88 | bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) |
| 89 | bar.add_xaxis(issue_nos) |
| 90 | categories = ['文章', '项目', '音视频', '讨论', '赠书'] |
| 91 | for category, values in zip(categories, [articles, projects, audio_video, hot_topics, books]): |
| 92 | color = color_map.get(category, "#000000") |
| 93 | bar.add_yaxis( |
| 94 | category, |
| 95 | values, |
| 96 | stack="总量", |
| 97 | itemstyle_opts=opts.ItemStyleOpts(color=color), |
| 98 | label_opts=opts.LabelOpts(is_show=True, formatter=JsCode( |
| 99 | "function(params) { return params.value > 0 ? params.value : ''; }" |
| 100 | )) |
| 101 | ) |
| 102 | bar.set_global_opts( |
| 103 | xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=0)), |
| 104 | yaxis_opts=opts.AxisOpts(type_="value"), |
| 105 | toolbox_opts=opts.ToolboxOpts(is_show=False) |
| 106 | ) |
| 107 | return bar |
| 108 | |
| 109 | def create_pie_chart(articles, projects, audio_video, hot_topics, books, color_map): |
| 110 | """ |
no outgoing calls
no test coverage detected