失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用Python pyecharts v1.x 绘制图形(二):折线图 折线面积图 散点图 雷达图 箱线图 词云图

用Python pyecharts v1.x 绘制图形(二):折线图 折线面积图 散点图 雷达图 箱线图 词云图

时间:2022-03-04 06:49:41

相关推荐

用Python pyecharts v1.x 绘制图形(二):折线图 折线面积图 散点图 雷达图 箱线图 词云图

文章目录

关于pyecharts折线图折线面积图散点图雷达图箱线图词云图其他

关于pyecharts

pyecharts是一个用于生成echart(百度开源的数据可视化javascript库)图表的类库。pyecharts 分为 v0.5.x 和 v1.x 两个大版本,版本不兼容,本篇所有的案例基于pyecharts v1.6.2。chart.render()成的html文件,会导入echarts脚本/assets/echarts.min.js案例背景假设为校OJ(online judge) V2.0 后台

折线图

# 折线图import randomimport pyecharts.options as optsfrom pyecharts.charts import Linefrom mons.utils import JsCodeline = (Line().add_xaxis(['{}月第{}周周赛'.format(y,z) for y in range(1, 3) # 1、2月 for z in range(1, 5)]) # 1-4周.add_yaxis('A题', [random.randint(10, 20) for _ in range(8)], is_smooth=True, # 平滑markpoint_opts=opts.MarkPointOpts(# 使用coord这个属性设置自定义标记点数值,我这儿随便写data=[opts.MarkPointItem(name='自定义标记点',coord=[2,18],value='标注值')])).add_yaxis('B题', [random.randint(5, 20) for _ in range(8)]).add_yaxis('C题', [random.randint(5, 20) for _ in range(8)]).set_series_opts(label_opts=opts.LabelOpts(formatter=JsCode( # 通过定义JavaScript回调函数自定义标签"function(params){""return params.value[1].toString() + '%';}" # 外层单引号内存双引号亲测不行!))).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), # 设置x轴标签旋转角度yaxis_opts=opts.AxisOpts(name='AC率', min_=3), title_opts=opts.TitleOpts(title='折线示例_ACM题目分析')) )line.render('折线图.html')

折线面积图

# 折线面积图import randomimport pyecharts.options as optsfrom pyecharts.charts import Linefrom mons.utils import JsCodeline = (Line().add_xaxis(['{}月第{}周周赛'.format(y,z) for y in range(1, 3) # 1、2月 for z in range(1, 5)]) # 1-4周.add_yaxis('蔡队', [random.randint(10, 20) for _ in range(8)], is_symbol_show=False, areastyle_opts=opts.AreaStyleOpts(opacity=0.5),markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='average', name='均值'),opts.MarkPointItem(type_='max', name='最大值'),opts.MarkPointItem(type_='min', name='最小值')], symbol_size=50) ).add_yaxis('旺神', [random.randint(6, 20) for _ in range(8)], is_smooth=True, is_symbol_show=False,areastyle_opts=opts.AreaStyleOpts(opacity=0.5)).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), # 设置x轴标签旋转角度yaxis_opts=opts.AxisOpts(name='完成积分', min_=5), title_opts=opts.TitleOpts(title='折线面积图示例_周赛分析')) )line.render('折线面积图.html')

散点图

# 散点图from pyecharts.charts import Scatterfrom pyecharts import options as optsfrom mons.utils import JsCodeimport pandas as pddef scatter_simple() -> Scatter:# 数据源df = pd.DataFrame({'AC':[21,22,23,24,28,30,34,35,40,44,45], # 刷题数'ACB':[140,120,380,120,200,190,160,300,300,400,500],'姓名':['小军','NIL','假冒NOI','小白','弱刚','晓雷','窜天','云云','依图','蔡队','旺神',]})# inplace=True:不创建新的对象,直接对原始对象进行修改# 升序df.sort_values('AC', inplace=True, ascending=True) c = (Scatter().add_xaxis(df.AC.values.tolist()).add_yaxis('刷题_能力_姓名',df[['ACB','姓名']].values.tolist(),label_opts=opts.LabelOpts(formatter=JsCode('function(params){return params.value[2];}' #通过定义JavaScript回调函数自定义标签))).set_global_opts(title_opts=opts.TitleOpts(title='散点图示例--ACM集训队队员能力'),xaxis_opts=opts.AxisOpts(name='AC(刷题数)', type_='value', min_=20), #x轴从20开始,原点不为0yaxis_opts=opts.AxisOpts(name='ACB(能力值)', min_=100), # y轴起始点的值legend_opts=opts.LegendOpts(is_show=True)))return cscatter_simple().render('散点图.html')

雷达图

# 雷达图import randomfrom pyecharts import options as optsfrom pyecharts.charts import Page, Radardef radar_simple() -> Radar:c = (Radar().add_schema(# 各项的max_值可以不同schema=[opts.RadarIndicatorItem(name='计算几何学', max_=100),opts.RadarIndicatorItem(name='动态规划', max_=100),opts.RadarIndicatorItem(name='图论', max_=100),opts.RadarIndicatorItem(name='搜索', max_=100),opts.RadarIndicatorItem(name='模拟', max_=100),opts.RadarIndicatorItem(name='数论', max_=100),]).add('旺神', [[random.randint(10, 101) for _ in range(6)]], color='red', areastyle_opts = opts.AreaStyleOpts( #设置填充的属性opacity = 0.5, color='red' ),).add('蔡队', [[random.randint(10, 101) for _ in range(6)]],color='blue',areastyle_opts = opts.AreaStyleOpts(opacity = 0.5,#透明度color='blue'),).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).set_global_opts(title_opts=opts.TitleOpts(title='雷达图示例-ACM集训队队员能力')))return cradar_simple().render('雷达图.html')

箱线图

# 箱线图--描述离散程度from pyecharts import options as optsfrom pyecharts.charts import Boxplotdef boxpolt_base() -> Boxplot:v_sophomore = [[1.1, 2.2, 2.6, 3.2, 3.7, 4.2, 4.7, 4.7, 5.5, 6.3, 8.0],[2.5, 2.5, 2.8, 3.2, 3.7, 4.2, 4.7, 4.7, 5.5, 6.3, 7.0]]v_junior = [[3.6, 3.7, 4.7, 4.9, 5.1, 5.2, 5.3, 5.4, 5.7, 5.8, 5.8],[3.6, 3.7, 4.7, 4.9, 5.1, 5.2, 5.3, 5.4, 5.7, 5.8, 5.8]]# 最小值,下四分位数,中位数、上四分位数、最大值# [min, Q1, median (or Q2), Q3, max]c = (Boxplot().add_xaxis(['寒假作业','暑假作业']).add_yaxis('大二队员', Boxplot.prepare_data(v_sophomore)).add_yaxis('大三队员', Boxplot.prepare_data(v_junior)).set_series_opts(label_opts=opts.LabelOpts(is_show=True)).set_global_opts(title_opts=opts.TitleOpts(title='ACM集训队祖传练习完成时长离散度'),xaxis_opts=opts.AxisOpts(name='单位:小时'), legend_opts=opts.LegendOpts(is_show=True)).reversal_axis() #翻转XY轴)return cboxpolt_base().render('箱线图.html')

词云图

# 词云图from pyecharts import options as optsfrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypewords = [('背包问题', 10000),('大整数', 6181),('Karatsuba乘法算法', 4386),('穷举搜索', 4055),('傅里叶变换', 2467),('状态树遍历', 2244),('剪枝', 1868),('Gale-shapley', 1484),('最大匹配与匈牙利算法', 1112),('线索模型', 865),('关键路径算法', 847),('最小二乘法曲线拟合', 582),('二分逼近法', 555),('牛顿迭代法', 550),('Bresenham算法', 462),('粒子群优化', 366),('Dijkstra', 360),('A*算法', 282),('负极大极搜索算法', 273),('估值函数', 265)]def wordcloud_base() -> WordCloud:c = (WordCloud().add("", words, word_size_range=[20, 100], shape=SymbolType.ROUND_RECT).set_global_opts(title_opts=opts.TitleOpts(title='WordCloud示例-OJ搜索关键字')))return cwordcloud_base().render('词云图.html')

其他

上一篇:用Python pyecharts v1.x 绘制图形(一):柱状图、柱状堆叠图、条形图、直方图、帕累托图、饼图、圆环图、玫瑰图

如果觉得《用Python pyecharts v1.x 绘制图形(二):折线图 折线面积图 散点图 雷达图 箱线图 词云图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。