Pandas及Seaborn绘图

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

1、Pandas绘图

# 可用的绘图样式 
plt.style.available
# 设置绘图样式
plt.style.use('seaborn-colorblind')

DataFrame绘图
np.random.seed(100)
df = pd.DataFrame({'A': np.random.randn(365).cumsum(0),
                  'B': np.random.randn(365).cumsum(0) + 20,
                  'C': np.random.randn(365).cumsum(0) - 20},
                 index=pd.date_range('2017/1/1', periods=365))
print(df.head())
print(df.plot())
print(df.plot('A', 'B', kind='scatter'))
# 颜色(c)和大小(s)有'B'列的数据决定
ax = df.plot('A', 'C', kind='scatter',
        c='B', s=df['B'], colormap='viridis')
print(ax)
# 设置坐标为相同比例
print(ax.set_aspect('equal'))
print(df.plot(kind='box'))
print(df.plot(kind='hist', alpha=0.7))
print(df.plot(kind='kde'))
plt.show()
# pandas.tools.plotting
iris = pd.read_csv('iris.csv')
print(iris.head())
# 用于查看变量间的关系
print(pd.plotting.scatter_matrix(iris))
# 用于查看多遍量分布
plt.figure()
print(pd.plotting.parallel_coordinates(iris, 'Name'))

2、Seaborn绘图

import seaborn as sns
np.random.seed(100)
v1 = pd.Series(np.random.normal(0, 10, 1000), name='v1')
v2 = pd.Series(2 * v1 + np.random.normal(60, 15, 1000), name='v2')
plt.figure()
plt.hist(v1, alpha=0.7, bins=np.arange(-50, 150, 5), label='v1')
plt.hist(v2, alpha=0.7, bins=np.arange(-50, 150, 5), label='v2')
plt.legend()
plt.figure()
plt.hist([v1, v2], histtype='barstacked', normed=True)
v3 = np.concatenate((v1, v2))
sns.kdeplot(v3)
# 使用seaborn绘图
plt.figure()
sns.distplot(v3)
# 使用seaborn绘图
plt.figure()
sns.jointplot(v1, v2, alpha=0.4)
# 使用seaborn绘图
plt.figure()
grid = sns.jointplot(v1, v2, alpha=0.4)
grid.ax_joint.set_aspect('equal')
plt.figure()
sns.jointplot(v1, v2, kind='hex')
plt.figure()
sns.jointplot(v1, v2, kind='kde')
iris = pd.read_csv('iris.csv')
iris.head()
sns.pairplot(iris, hue='Name', diag_kind='kde')
plt.figure()
plt.subplot(121)
sns.swarmplot('Name', 'PetalLength', data=iris)
plt.subplot(122)
sns.violinplot('Name', 'PetalLength', data=iris)
plt.show()

猜你喜欢

转载自blog.csdn.net/happy5205205/article/details/80876396