pyecharts--> 生成Echarts图标的类库html
pip install pyecharts
pip install pyecharts_snapshot
首先,测试绘制个图表python
from pyecharts import Bar bar = Bar("个人第一个图表", "这里是副标题") bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90]) bar.show_config() bar.render("temperature.html")
add()
show_config()
render()
基本上全部的图表类型都是这样绘制的:浏览器
chart_name = Type()
初始化具体类型图表。add()
添加数据及配置项。render()
生成 .html 文件。
from pyecharts import Bar attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] bar = Bar("Bar chart", "precipitation and evaporation one year") # 主标题、副标题 bar.add("precipitation", attr, v1, mark_line=["average"], mark_point=["max", "min"]) bar.add("evaporation", attr, v2, mark_line=["average"], mark_point=["max", "min"]) bar.render("name.html") # 渲染成HTML文件
attr:列表 ,名称 ,横向坐标方向echarts
v1 / v2:列表, 数据,纵坐标方向编辑器
mark_point / mark_line:标记点、标记线。用于标记最大最小值,标记平均值的线,标记的形状、颜色 、大小,自定义标记的点等。标记线能够是任何两点连线测试
文中 mark_line=["average"]:标记平均值 , mark_point=["max", "min"]:标记最大值、最小值动画
render:渲染成文件编码
若是在A、B商家中的bar_add参数中添加is_stack:表示叠加效果,即商家A、商家B数据叠在一块儿展现spa
横向柱形图:is_convert=True,标识交换X轴和Y轴3d
效果:
from pyecharts import EffectScatter v1 = [10, 20, 30, 40, 50, 60] # 横坐标 v2 = [25, 20, 15, 10, 60, 33] #纵坐标 es = EffectScatter("动态散点图示例") es.add("effectScatter", v1, v2) es.render() # 默认在当前路径渲染成render.html文件
from pyecharts import EffectScatter es = EffectScatter("动态散点图各类图形示例") es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect") es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect") es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond") es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow") es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle") es.render()
from pyecharts import Line attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 10, 100] v2 = [55, 60, 16, 20, 15, 80] line = Line("折线图示例") line.add("商家A", attr, v1, mark_point=["average"]) line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"]) line.show_config() line.render()
from pyecharts import Pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例") pie.add("", attr, v1, is_label_show=True) pie.show_config() pie.render()
from pyecharts import WordCloud name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] value = [10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265] wordcloud = WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[20, 100]) wordcloud.show_config() wordcloud.render()
from pyecharts import WordCloud name = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break'] value = [10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265] wordcloud = WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[30, 100], shape='diamond') wordcloud.show_config() wordcloud.render()
数据表:luqu.csv ,共100条数据
一、查询分数相同的数量:
import pandas as pd import matplotlib.pyplot as plt f = pd.read_csv("luqu.csv",encoding='gbk') #导入数据 # print(f.head()) f['分数'].value_counts().plot(kind="barh",rot='0') # value_counts:数量,kind:统计数据类型,bar:柱状图,h表示横向展现 , rot:label的角度 plt.show()
将plot的参数改动下:
f['分数'].value_counts().plot(kind="bar",rot='30')
发现x轴label角度变了,柱状图也变成纵向的了