# python数据分析常用图大集合

2019/04/10 10:10

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


matplotlib官网

[toc]

# 一、折线图

x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [5, 3, 6, 20, 17, 16, 19, 30, 32, 35]

• Matplotlib
plt.plot(x, y)
plt.show()


• Seaborn
df = pd.DataFrame({'x': x, 'y': y})
sns.lineplot(x="x", y="y", data=df)
plt.show()


# 二、直方图

a = np.random.randn(100)
s = pd.Series(a)

• Matplotlib
plt.hist(s)
plt.show()


• Seaborn
sns.distplot(s, kde=False)
plt.show()
sns.distplot(s, kde=True)
plt.show()


# 三、垂直条形图

x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [5, 4, 8, 12, 7]

• Matplotlib
plt.bar(x, y)
plt.show()


• Seaborn
plt.show()


# 四、水平条形图

x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [5, 4, 8, 12, 7]
plt.barh(x, y)
plt.show()


# 五、饼图

nums = [25, 37, 33, 37, 6]
labels = ['High-school','Bachelor','Master','Ph.d', 'Others']
plt.pie(x = nums, labels=labels)
plt.show()


# 六、箱线图

• Matplotlib
# 生成0-1之间的10*4维度数据
data=np.random.normal(size=(10,4))
lables = ['A','B','C','D']
# 用Matplotlib画箱线图
plt.boxplot(data,labels=lables)
plt.show()


• Seaborn
# 用Seaborn画箱线图
df = pd.DataFrame(data, columns=lables)
sns.boxplot(data=df)
plt.show()


# 七、热力图

flights = sns.load_dataset("flights")
data=flights.pivot('year','month','passengers')
sns.heatmap(data)
plt.show()


# 八、散点图

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)

• Matplotlib
plt.scatter(x, y,marker='x')
plt.show()


• Seaborn
df = pd.DataFrame({'x': x, 'y': y})
sns.jointplot(x="x", y="y", data=df, kind='scatter');
plt.show()


# 九、蜘蛛图

labels=np.array([u"推进","KDA",u"生存",u"团战",u"发育",u"输出"])
stats=[83, 61, 95, 67, 76, 88]
# 画图数据准备，角度、状态值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 用Matplotlib画蜘蛛图
fig = plt.figure()
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 设置中文字体
font = FontProperties(fname=r"/System/Library/Fonts/PingFang.ttc", size=14)
ax.set_thetagrids(angles * 180/np.pi, labels, FontProperties=font)
plt.show()


# 十、二元变量分布

tips = sns.load_dataset("tips")
#散点图
sns.jointplot(x="total_bill", y="tip", data=tips, kind='scatter')
#核密度图
sns.jointplot(x="total_bill", y="tip", data=tips, kind='kde')
#Hexbin图
sns.jointplot(x="total_bill", y="tip", data=tips, kind='hex')
plt.show()


# 十一、面积图

df = pd.DataFrame(
np.random.rand(10, 4),
columns=['a', 'b', 'c', 'd'])

# 堆面积图
df.plot.area()

# 面积图
df.plot.area(stacked=False)



# 十二、六边形图

df = pd.DataFrame(
np.random.randn(1000, 2),
columns=['a', 'b'])
df['b'] = df['b'] + np.arange(1000)

# 关键字参数gridsize；它控制x方向上的六边形数量，默认为100，较大的gridsize意味着更多，更小的bin
df.plot.hexbin(x='a', y='b', gridsize=25)


0
0 收藏

0 评论
0 收藏
0