matplotlib数据可视化
无论是大数据、还是小数据、也不管通过统计还是挖掘或机器学习,人们最终想看到的数据,越直观越好,所以这个就涉及到一个数据的可视化问题,而python或pandas的数据可视化功能很强大,可画的种类多,也非常便捷,这是一般数据库软件和开发工具目前所欠缺的。以下我们通过两个实例来说明利用python的matplotlib或pandas实现数据的可视化。
参考博客:https://www.cnblogs.com/kuaizifeng/p/9067795.html
1、模拟随机游走
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import numpy.random as np_random
import pylab
print('模拟随机游走')
nsteps = 1000
draws = np.random.randint(0, 2, size=nsteps) #随机从0-2(不含)生成整数,size为个数
steps = np.where(draws > 0, 1, -1) #draws>0时,输出1,否则输出-1
walk=steps.cumsum()
# 画图
plt.title('Random Walk')
limit = max(abs(min(walk)), abs(max(walk))) #abs取绝对值
plt.axis([0, 1000, -limit, limit])
x = np.linspace(0, 1000, 1000)
plt.plot(x, walk, 'g-')
plt.show()
numpy.random.randint
low、high、size三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。
np.where(condition, x, y)
满足条件(condition),输出x,不满足输出y
2、三角函数图像
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] ###显示中文
plt.rcParams['axes.unicode_minus']=False ##防止坐标轴上的-号变为方块
x = np.linspace(0, 10, 100)
y = np.sin(x)
y1 = np.cos(x)
##绘制一个图,长为10,宽为6(默认值是每个单位80像素)
plt.figure(figsize=(10,6))
###在图列中自动显示$间内容
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,y1,"b--",label="$cos(x^2)$") ###b(blue),--线形
plt.xlabel(u"X值") ##X坐标名称,u表示unicode编码
plt.ylabel(u"Y值")
plt.title(u"三角函数图像") ##t图名称
plt.ylim(-1.2,1.2) ##y上的max、min值
plt.legend() ##显示图例
plt.savefig('fig01.png') ##保持到当前目录
plt.show()
3、污染指数柱状图
PYECHARTS可视化
from pyecharts import Bar
import pandas as pd
comp_df = pd.read_csv('data/comparison_result.csv', index_col='state')
comp_df
good_state_results = comp_df.iloc[0, :].values
heavy_state_results = comp_df.iloc[1, :].values
light_state_results = comp_df.iloc[2, :].values
medium_state_results = comp_df.iloc[3, :].values
labels = comp_df.index.values.tolist()
city_names = comp_df.columns.tolist()
bar = Bar("江涛--堆叠柱形图")
bar.add('良好', city_names, good_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('轻度污染', city_names, light_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('中度污染', city_names, medium_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar.add('重度污染', city_names, heavy_state_results, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar
# 保存结果到html
bar.render('echarts_demo.html')
4、幸福指数国家堆叠柱状图
from pyecharts import Bar
import pandas as pd
df= pd.read_csv('data/2015.csv')
from pyecharts import Bar
import pandas as pd
df= pd.read_csv('data/2015.csv')
df2= df1[['Country','Happiness Score','Economy (GDP per Capita)','Family']]
df3 = df2[df2['Country'].str.contains('Austria|Mexico|Israel|New Zealand')]
Happiness_res = df3['Happiness Score'].values
Economy_res = df3['Economy (GDP per Capita)'].values
Family_res = df3['Family'].values
city_names = df3['Country'].tolist() #添加横坐标名称
bar1=Bar('堆叠柱状图')
bar1.add('幸福分数', city_names, Happiness_res, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar1.add('生产总值', city_names, Economy_res, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar1.add('家庭', city_names, Family_res, is_stack=True, xaxis_interval=0, xaxis_rotate=30)
bar1
bar1.render('new_echarts_happy.html')