绘制简单图形
散点图和折线图
-
引入matplotlib的pyplot包
- import matplotlib.pyplot as plt
-
引入Seaborn包
- import seaborn as sns
-
散点图
- Pyplot中的scatter()
- plt.scatter(x,y,marker=None)
- Seaborn中的jointplot()
- sns.jointplot(x,y,data=None,kind=‘scatter’)
- Pyplot中的scatter()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
N=1000
x = np.random.randn(N)
y = np.random.randn(N)
#用Matplotlib画散点图
plt.scatter(x,y,marker='>')
plt.show()
#用Seaborn画散点图
df=pd.DataFrame({'x':x,'y':y})
sns.jointplot(x='x',y='y',data=df,kind='scatter')
plt.show()
- 折线图
- Pyplot中的plot()
- plt.plot(x,y)
- Seaborn中的lineplot()
- sns.lineplot(x=‘x’,y=‘y’,data=df)
- Pyplot中的plot()
import pandas as pd
import matplotlib.pylpot as plt
import seaborn as sns
#数据准备
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()
- 直方图
- Pyplot中的hist()
- plt.hist(x,bins=10)
- Seaborn中的distplot()
- sns.distplot(x,bins=10,kde=True)
- Pyplot中的hist()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
a = np.random.randn(100)
s = pd.Series(a)
#用Matplotlib画直方图
plt.hist(s)
plt.show()
#用Seaborn画直方图
sns.distplot(s,kde=Flase)
plt.show()
sns.distplot(s,kde=True)
plt.show()
- 条形图
- Pyplot中的bar()
- plt.bar(x,height)
- Seaborn中的barplot()
- sns.barplot(x=None,y=None,data=None)
- Pyplot中的bar()
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
x = ['Cat1','Cat2','Cat3','Cat4','Cat5']
y = [5,4,8,12,7]
#用Matplotlib画条形图
plt.bar(x,y)
plt.show()
#用Seaborn画条形图
sns.barplot(x,y)
plt.show()
- 箱线图
- Pyplot中的boxplot()
- plt.boxplot(x,labels=None)
- Seaborn中的boxplot()
- sns.boxplot(x=None,y=None,data=None)
- Pyplot中的boxplot()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
#生成0~1之间的10*4维度数据
data=np.random.normal(size=(10,4))
lables=['A','B','C','D']
#用Matplotlib画箱线图
plt.boxplot(data,labels=labels)
plt.show()
#用Seaborn画箱线图
df=pd.DataFrame(data,columns=labels)
sns.boxplot(data=df)
plt.show()
- 饼图
- Pyplot中的pie()
- plt.boxplot(x,labels=None)
import matplotlib.pyplot as plt
#数据准备
nums=[25,37,33,37,6]
labels=['High-school','Bachelor','Master','Ph.d','Others']
#用Matplotlib画饼图
lpt.pie(x = nums,labels=labels)
plt.show()
- 热力图
- Seaborn中的heatmap()
- sns.heatmap(data)
- Seaborn中的heatmap()
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
fights=sns.load_dataset("flights")
data=flights.pivot('year','month','passengers')
#用Seaborn画热力图
sns.heatmap(data)
plt.show()
- 蜘蛛图
inport numpy as np
import matplotlib.pyplot as plt
#支持中文显示
plt.rcParams['font.sans-serif'] = [u'SimHei']
#数据准备
labels=np.array(["编程能力","沟通技能","专业知识","团体协作","工具掌握"])
stats=[83,61,95,67,76]
#画图数据准备、角度、状态值
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=fig.add_subplot(111,polar=True)
#设置网络标签
ax.set_thetagrids(angles*180/np.pi,labels)
ax.plot(angles,stats,'o-',linewidth=2)
ax.fill(angles,stats,alpha=0.25)
plt.show()
- 二元变量分布
- Seaborn中的jointplot()
- sns.jointplot(x,y,data=None,kind)
- 参数kind表示不同的图表
- “ kind=‘scatter’ ”代表散点图
- “ kind=‘kde’ ”代表核密度图
- “ kind=‘hex’ ”代表Hexbin图
- Seaborn中的jointplot()
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
tips = sns.load_dataset("tips")
print(tips.head(10))
#用Seaborn画二元变量分布图(散点图、核密度图、Hexbin图)
sns.jointplot(x="total_bill",y="tip",data=tips,kind="scatter")
sns.jointplot(x="total_bill",y="tip",data=tips,kind="kde")
sns.jointplot(x="total_bill",y="tip",data=tips,kind="hex")
plt.show()
- 成对关系
- Seaborn中的pairplot()
- sns.pairplot(iris)
- Seaborn中的pairplot()
import matplotlib.pyplot as plt
import seaborn as sns
#数据准备
iris = sns.load_dataset('iris')
#用Seaborn画成对关系
sns.pairplot(iris)
plt.show()