plot参数详解python_一文入门Python数据可视化(附项目详解)

plot参数详解python_一文入门Python数据可视化(附项目详解)_第1张图片

数据可视化能让人们更直观的了解数据所要传递的信息,就像画家可以用绘画来感知世界一样。

本文前两部分就来学习一下如何用python实现这一目的。

你还记得吗?在《如何使用python进行数据分析》一文中,我们的项目遗留了一个小尾巴没有解决。本文最后我们将重新梳理思路并完成该案例的分析,跟紧步伐继续学习吧~

一只小猴:如何使用python进行数据分析?​zhuanlan.zhihu.com
plot参数详解python_一文入门Python数据可视化(附项目详解)_第2张图片

一、Matplotlib绘图

matplotlib,是matrix+plot+library的缩写,是基于python的非常强大绘图库,提供完全的2D支持和部分3D图像支持。由于它不是python内置库,调用前需手动安装。

(一)导入

调用matplotlib库绘图一般使用pyplot子模块,其集成了绝大部分常用的方法。

import matplotlib.pyplot as plt
%matplotlib inline

%matplotlib inline是一个魔法函数,当输入plt.plot(x,y)后,不必再输入plt.show(),图像将自动显示出来,此语句常在jupyter notebook中使用。

(二)绘图

plot参数详解python_一文入门Python数据可视化(附项目详解)_第3张图片

1. 折线图

# 生成数据
x = [1,3,5,7]
y = [2,4,9,8]

# 新建一个空画布
plt.figure()
# 绘图
plt.plot(x,y)
# 图像显示
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第4张图片

在以上操作的基础上设置画布大小、线型、线条颜色及标题。

# 生成数据
x = np.linspace(-10,10,1000)

# 新建画布,并设置尺寸
plt.figure(figsize=(8,5))
# 设置线型、线条颜色
plt.plot(x,np.sin(x), '-.r', label='sin(x)')
plt.plot(x,np.cos(x), 'g', label='cos(x)')
# 显示图例
plt.legend()
# 设置标题
plt.title('I'm Title')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第5张图片

注意:默认是无法显示中文的,如有需要,在绘图代码中加上下方代码即可。

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号乱码
plt.rcParams['axes.unicode_minus'] = False

2. 散点图

# 随机生成0-1范围内的10个点
x = np.random.rand(10)
y = np.random.rand(10)

plt.scatter(x, y)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第6张图片

在以上操作的基础上设置散点颜色、大小、透明度及形状。

n = 20
x = np.random.rand(n)
y = np.random.rand(n)

colors = np.random.rand(n)
size = (15*np.random.rand(n))**2
plt.scatter(x, y, s=size, c=colors, marker='^', alpha=0.4)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第7张图片

3. 条形图

price = [39.5, 39.9, 45.4, 38.9, 33.34]

plt.barh(range(5), price, height=0.5, color='steelblue', alpha=0.5)
plt.yticks(range(5), ['亚马逊', '当当网', '中国图书网', '京东', '天猫'])
# 设置横坐标轴名称
plt.xlabel('价格')
# 设置横坐标轴刻度范围
plt.xlim(30,47)
plt.title('不同平台图书价格')
# 设置数据标签位置及大小
for x, y in enumerate(price):
    plt.text(y + 0.3, x - 0.1, '%s' % y)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第8张图片

思考一下,如何更改以上代码,将其转位纵向条形图呢?

price = [39.5, 39.9, 45.4, 38.9, 33.34]
plt.bar(range(5), price, width=0.5, color='steelblue', alpha=0.5)
plt.xticks(range(5), ['亚马逊', '当当网', '中国图书网', '京东', '天猫'])
plt.ylabel('价格')
plt.ylim(30,47)
plt.title('不同平台图书价格')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第9张图片

4. 直方图

data = np.random.randn(10000)

plt.hist(data, bins=40, facecolor='blue', edgecolor='black', alpha=0.7)
# 设置横坐标轴名称
plt.xlabel('区间')
# 设置纵坐标轴名称
plt.ylabel('频数/频率')
# 显设置图标题
plt.title('频数/频率分布直方图')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第10张图片

5. 饼图

name = ['亚马逊', '当当网', '中国图书网', '京东', '天猫']
price = [39.5, 39.9, 45.4, 38.9, 33.34]

plt.figure(figsize=(5,5))
plt.pie(price, labels=name, autopct='%.2f%%')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第11张图片

在以上操作的基础上,显示阴影及突出显示类目。

name = ['亚马逊', '当当网', '中国图书网', '京东', '天猫']
price = [39.5, 39.9, 45.4, 38.9, 33.34]

plt.figure(figsize=(5,5))
plt.pie(price, labels=name, explode=[0,0,0.1,0,0.2], shadow=True, autopct='%.2f%%')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第12张图片

matplotlib虽然提供了大量丰富的可视化绘图接口,但仍存在一定缺点,如绘图步骤繁琐、图不够美观等。因此,在它的基础上封装了更便捷的可视化库,如seaborn、pandas.plot、ggplot。

二、Seaborn绘图

seaborn是对matplotlib的高级封装,具有更美观的图形样式和颜色配置,并提供了常用的统计图形接口。

使用前同样需要导入,代码格式如下:

import seaborn as sns

这里我们使用的数据是seaborn的默认数据(网盘链接:https://pan.baidu.com/s/19OBxTcSG7YixXkuf2It3eQ 提取码:gnri)。

将数据导入并理解各字段的含义,这对分析问题往往起着事半功倍的效果。

df = pd.read_csv(r'C:UsersAdministratorDesktoptips.csv')
df.head()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第13张图片

1. 散点图

sns.relplot(x='total_bill', y='tip', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第14张图片

在以上操作的基础上,通过参数hue、style和size实现按另一个变量分组,并设置不同类型的方式和点的大小。

sns.relplot(x='total_bill', y='tip', hue='day', style='time', size='size', data = df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第15张图片

2. 分布散点图

分布散点图指按照不同类别对样本数据进行图的绘制,一般与箱线图和小提琴图联合使用。

sns.stripplot(x='day', y='total_bill', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第16张图片

3. 分布密度散点图

分布密度散点图与分布散点图类似,只是对点进行了调整以更好的显示值的分布,因此点不会重叠。

sns.swarmplot(x='day', y='total_bill', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第17张图片

4. 箱线图

箱线图展示了分位数的位置,它显示了定量数据在一个或多个分类变量的多个层次上的分布,这些分布可以进行比较。

sns.boxplot(x='day', y='total_bill', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第18张图片

5. 小提琴图

小提琴图以基础分布的核密度估计为特征,通过该图可以知道哪些位置的密度较高,它不像箱线图中所有绘制的组件都对应于实际数据点。

sns.violinplot(x='day', y='total_bill', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第19张图片

6. 条形图

sns.barplot(x='day', y='total_bill', hue='sex', data=df)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第20张图片

参数estimator用于估计每个分类箱内的统计函数,默认为mean(平均值),numpy的统计函数都可以传入该参数,我们尝试一下设置其为中位数,并更改误差棒的颜色和宽度。

sns.barplot(x='day', y='total_bill', hue='sex', data=df, estimator=np.median, capsize=0.1, errcolor='r')
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第21张图片

7. 直方图

data = np.random.randn(10000)

sns.distplot(data, bins=60, hist=True)
plt.show()

plot参数详解python_一文入门Python数据可视化(附项目详解)_第22张图片

以上仅是matplotlib和seaborn一些最基本的内容,实际操作中如果要深入学习可以查看官方文档,里面有很详细的阐述。

matplotlib官方文档:https://matplotlib.org/users/pyplot_tutorial.html

seaborn官方文档:http://seaborn.pydata.org/

三、项目详解

这里先放一个最终的结果图。

文末福利放送:数据、全代码及notebook报告的网盘链接,大家按需下载吧~~

plot参数详解python_一文入门Python数据可视化(附项目详解)_第23张图片

链接来啦~

https://pan.baidu.com/s/1CSos-atxC4PSoDxj5ngyPg 提取码:jxec

以上就是全部内容啦,如果你对此项目有更好的分析建议,评论留言告诉我吧。

拜拜~~

你可能感兴趣的:(plot参数详解python)