图书学习打卡:Python数据分析基础教程/王斌会 第五章 数据的可视化分析
5.1 特殊统计图的绘制
#(1)初等函数
import math
x=np.linspace(0,2*math.pi);x #[0,2*pi]序列
#fig,ax=plt.subplots(2,2,figsize=(15,12))
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.plot(x,np.log(x))
plt.plot(x,np.exp(x))
#(2)极坐标图 (加公式)
t=np.linspace(0,2*math.pi)
x=2*np.sin(t)
y=3*np.cos(t)
plt.plot(x,y)
plt.text(0,0,r'$\frac{x^2}{2}+\frac{y^2}{3}=1$',fontsize=15)
#(3)三维曲面图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X=np.linspace(-4,4,20) #X = np.arange(-4, 4, 0.5);
Y=np.linspace(-4,4,20) #Y = np.arange(-4, 4, 0.5)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X**2 + Y**2)
ax.plot_surface(X, Y, Z)
#气泡图
plt.scatter(BSdata['身高'], BSdata['体重'], s=BSdata['支出']);
#三维三点图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(BSdata['身高'], BSdata['体重'], BSdata['支出'])
5.2 SeaBorn统计绘图
5.2.1 SeaBorn库的介绍
5.2.2 基本绘图展示
##5.2 Seaborn统计绘图
import seaborn as sns
#(1)箱线图boxplot
# 绘制箱线图
sns.boxplot(x=BSdata['身高'])
# 竖着放的箱线图,也就是将x换成y
sns.boxplot(y=BSdata['身高'])
# 分组绘制箱线图,分组因子是性别,在x轴不同位置绘制
sns.boxplot(x='性别', y='身高',data=BSdata)
# 分组箱线图,分子因子是smoker,不同的因子用不同颜色区分, 相当于分组之后又分组
sns.boxplot(x='开设', y='支出',hue='性别',data=BSdata)
#(2)小提琴图violinplot
sns.violinplot(x='性别', y='身高',data=BSdata)
sns.violinplot(x='开设', y='支出',hue='性别',data=BSdata)
#(3)散点图striplot
sns.stripplot(x='性别', y='身高',data=BSdata)
sns.stripplot(x='性别', y='身高',data=BSdata,jitter=True)
sns.stripplot(y='性别', x='身高',data=BSdata,jitter=True)
#(4)条图barplot
sns.barplot(x='性别', y='身高',data=BSdata,ci=0,palette="Blues_d")
#(5)计数的直方图countplot
# 分组绘图
sns.countplot(x='性别',data=BSdata)
sns.countplot(y='开设',data=BSdata)
sns.countplot(x='性别',hue="开设",data=BSdata)
#(6)两变量关系图factorplot
# 不同的deck(因子)绘制不同的alive(数值),col为分子图绘制,col_wrap每行画4个子图
sns.factorplot(x='性别',col="开设", col_wrap=3,data=BSdata, kind="count", size=2.5, aspect=.8)
#(7)概率分布图
sns.distplot(BSdata['身高'], kde=True, bins=20, rug=True);
sns.jointplot(x='身高', y='体重', data=BSdata);
sns.pairplot(BSdata[['身高','体重','支出']])
5.3 ggplot统计绘图
##5.3 ggplot绘图系统
from plotnine import * #加载和调用ggplot所有方法
#(1)直方图
qplot('身高',data=BSdata, geom='histogram')
#(2)条形图
qplot('开设',data=BSdata, geom='bar')
#(3)散点图
qplot('身高','体重',data=BSdata,color='性别');
qplot('身高','体重',data=BSdata,color='性别',size='性别');
###5.3.2 ggplot基本绘图
#(2)图层的概念
GP=ggplot(aes(x='身高',y='体重'),data=BSdata);GP #绘制直角坐标系
GP + geom_point() #增加点图
GP + geom_line() #增加线图
ggplot(BSdata,aes(x='身高',y='体重')) + geom_point() + geom_line()
ggplot(BSdata,aes(x='身高',y='体重',color='性别'))+geom_point()+theme_bw()
#(4)常见统计图
ggplot(BSdata,aes(x='身高'))+ geom_histogram()
ggplot(BSdata,aes(x='支出'))+geom_line(aes(y='身高'))
ggplot(BSdata,aes(x='支出'))+geom_line(aes(y='身高'))+geom_line(aes(y='体重'))
ggplot(BSdata,aes(x='身高')) + geom_histogram() + facet_wrap('性别')
ggplot(BSdata,aes(x='身高',y='体重')) + geom_point()
ggplot(BSdata,aes(x='身高',y='体重',color='性别'))+geom_point()
ggplot(BSdata,aes(x='身高',y='体重',color='性别'))+geom_point()+theme_bw()
ggplot(BSdata,aes(x='身高',y='体重',size='开设',colour='性别'))+geom_point()
ggplot(BSdata,aes(x='身高',colour='性别',fill='True')) + geom_density()
ggplot(BSdata,aes(x='身高',y='体重')) + geom_point() + facet_wrap('性别')
ggplot(BSdata,aes(x='身高',y='体重',color='性别'))+geom_point()+theme_bw()
### pyecharts
from pyecharts import Bar
bar = Bar('柱形图')
df = pd.DataFrame({'x':[1,2,3], 'y':[4,2,6]})
bar.add('first add', df.x, df.y)
bar
import pandas as pd
import numpy as np
df = pd.DataFrame([np.random.uniform(10,1,size=1000),
np.random.uniform(10,5,size=1000),
np.random.randint(1,high=10,size=1000),
np.random.choice(list('ABCD'),size=1000)],
index=['col1','col2','col3','col4']).T
df
from eplot import eplot
df.eplot()
df = pd.Series([4,2,6],index=[1,2,3])
df.eplot.bar(title='柱形图')