安装
写这篇文章用的是Win环境,首先打开命令行(win+R),输入:
pip install pyecharts
但笔者实测时发现,由于墙的原因,下载时会出现断线和速度过慢的问题导致下载失败,所以建议通过清华镜像来进行下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts
使用实例
使用之前我们要强调一点:就是python2.x和python3.x的编码问题,在python3.x中你可以把它看做默认是unicode编码,但在python2.x中并不是默认的,原因就在它的bytes对象定义的混乱,而pycharts是使用unicode编码来处理字符串和文件的,所以当你使用的是python2.x时,请务必在上方插入此代码:
from future import unicode_literals
(1)反应业务趋势折线图
import numpy as np
import matplotlib.style as ms
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 快递业务量
express_2018 = np.array([39, 20, 40, 38, 42, 43, 41, 41, 45, 48, 52, 50])
express_2019 = np.array([45, 28, 48, 49, 50, 51, 50, 50, 51, 52, 70, 65])
date_x = np.arange(1, 13)
fig = plt.figure()
ax = fig.add_subplot(111)
# 2018年折线颜色为“#8B0000”,正三角形
ax.plot(date_x, express_2018, color='#8B0000', marker='^',
linestyle='--', linewidth=1.5, label='2018年')
# 2019年折线颜色为“#006374”,长菱形
ax.plot(date_x, express_2019, color='#006374', marker='d',
linewidth=1.5, label='2019年')
ax.set_ylabel('业务量(亿件)')
ax.legend()
#主题风格
ms.use('fivethirtyeight')
plt.show()
(2)正弦曲线和余弦曲线的图表
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y_cos, y_sin = np.cos(x), np.sin(x)
#正弦曲线
plt.plot(x, y_cos, color='blue', linewidth=1.0, label='COS', alpha=0.5)
#余弦曲线
plt.plot(x, y_sin, color='red', linewidth=1.0, label='SIN')
plt.title('Cos & Sin')
plt.xticks([-np.pi, -np.pi / 2.0, 0, np.pi / 2.0, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])
plt.yticks(np.linspace(-1, 1, 5, endpoint=True))
#设置图例位置
plt.legend(loc='upper left')
#设置网格线
plt.grid()
# 填充绿色区域
plt.fill_between(x, np.abs(x) < 0.5, y_cos, y_cos > 0.5,
color='green', alpha=0.25)
# 加注释文本(x=1、y=np.cos(1))
plt.annotate('cos(1)', xy=(1, np.cos(1)), xycoords='data', xytext=(10, 30),
textcoords='offset points', arrowprops=dict(arrowstyle='->'))
plt.show()
(3)对猫的种类进行分析
vords = [(i,1) for i in cat_info['品种'].unique()]
c = (
WordCloud(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add("",vords,shape=SymbolType.DIAMOND)
.set_global_opts(title_opts=opts.TitleOpts(title=""))
)
c.render_notebook()
(4)对猫的的地区进行显示
cat_info['地区'] = cat_info['地区'].astype(str)
cat_info['province'] = cat_info['地区'].map(lambda s: s.split('/')[0])
pv = cat_info['province'].value_counts().reset_index()
c = (
Map(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add("",[list(z) for z in zip (list(pv['index']),list(pv['province']))],"china")
.set_global_opts(
title_opts=opts.TitleOpts(title="猫猫售卖省分布"),
visualmap_opts=opts.VisualMapOpts(max_=16500, is_inverse=True),
)
)c.render_notebook()
(5)交易品种占比树状图
from pyecharts import options as opts
from pyecharts.charts import TreeMap
pingzhong = cat_info['品种'].value_counts().reset_index()
data = [{'value':i[1],'name':i[0]} for i in zip(list(pingzhong['index']),list(pingzhong['品种']))]
c = (
TreeMap(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add("",data)
.set_global_opts(title_opts=opts.TitleOpts(title=""))
.set_series_opts(label_opts=opts.LabelOpts(position="inside"))
)
c.render_notebook()
(6)对猫不同种类的销售进行显示
c = (
PictorialBar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(location)
.add_yaxis(
"",
values,
label_opts=opts.LabelOpts(is_show=False),
symbol_size=18,
symbol_repeat="fixed",
symbol_offset=[0, 0],
is_symbol_clip=True,
symbol=SymbolType.ROUND_RECT,
)
.reversal_axis()
.set_global_opts(
title_opts=opts.TitleOpts(title='均价排名'),
xaxis_opts=opts.AxisOpts(is_show=False),
yaxis_opts=opts.AxisOpts(
axistick_opts=opts.AxisTickOpts(is_show=False),
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(opacity=0),
),
),
)
.set_global_opts(
opts.LabelOpts(position='insideRight')
)
)
c.render_notebook()
(7)年龄分布图(对猫的销售年龄进行显示)
cat_info['年龄'] = cat_info['年龄'].astype(str)
age = cat_info['年龄'].map(lambda x: x.replace('个月','')).reset_index()
def ages(s):
if s == 'nan':
return s
s = int(s)
if 1 <= s <3:
return '1-3个月'
if 3 <= s <6:
return '3-6个月'
if 6 <= s <9:
return '6-9个月'
if 9 <= s <12:
return '9-12个月'
if s >=12:
return '1年以上'
age['age'] = age['年龄'].map(ages)
age = age['age'].value_counts().reset_index()
age = age[age['index']!='nan']
age
(8)对猫的年龄分布进行显示
x = ['1-3个月','3-6个月','6-9个月','9-12个月','1年以上']
y = [69343,115288,18239,4139,5]
c = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(x)
.add_yaxis('',y)
.set_global_opts(title_opts=opts.TitleOpts(title="猫年龄分布"))
)
c.render_notebook()