Python之Matplotlib(六)

Python之Matplotlib(六)

一、小试牛刀

1、例题1

  • 将下表数据用组合柱状图的形式呈现?其中,横坐标为水果种类,纵坐标为价格与数量。
    提示:进行两次画图操作,注意计算好柱形图的x轴位置,保持图表的美观噢
    在这里插入图片描述
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
raw_data={'水果':['香蕉','苹果','草莓'],
          '价格':[2,4,10],
          '数量':[5,3,6]}
df=pd.DataFrame(raw_data)
pos=list(range(len(df['水果'])))
width=0.25
# 设置字体,不设置不能显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定字体
# 做题
plt.bar([p-width/2 for p in pos],df['价格'],width,color='#FFCCCC',label=df['水果'][0])
plt.bar([p+width/2 for p in pos],df['数量'],width,color='#6699CC',label=df['水果'][1])
# 中文标示
plt.xticks(np.linspace(0,2,3),df['水果'])
# 表示图例
plt.legend(['价格','数量'],loc='upper left')
plt.show()

运行结果
在这里插入图片描述

2、例题2

利用“人力资源分析数据集”(提取码:4nfo)
对环境的满意度(satisfaction_level)
每月加班平均时间(average_montly_hours)
对现有的项目的满意度(last_evaluation)

请你利用散点图挖掘出员工对环境满意度和其每月加班平均时间的关系

# 利用散点图挖掘出员工对环境满意度和其每月加班平均时间的关系
import matplotlib.pyplot as plt
from sklearn.utils import *
import pandas as pd
import numpy as np
hr_data=pd.read_csv('..\data\human_one\HR_comma_sep.csv')
print(hr_data.shape)
# print(hr_data.head())
# 打乱数据的序列
data=shuffle(hr_data).iloc[:200,:]
# 生成数据每月加班时间和环境满意度
x=data['average_montly_hours'].tolist()
y=data['satisfaction_level'].tolist()
t=np.arctan2(y,x)#用来显示颜色
# 绘制散点图
plt.scatter(x,y,c=t)
plt.show()

运行结果
在这里插入图片描述

3、例题3

针对“人力资源分析数据集”(提取码:4nfo),挖掘对现有的项目的满意度和月平均加班时间之间的关系;并将此图和上图合并显示

# 利用散点图挖掘出员工对环境满意度和其每月加班平均时间的关系
# 对现有的项目的满意度和月平均加班时间之间的关系
import matplotlib.pyplot as plt
from sklearn.utils import *
import pandas as pd
import numpy as np
import matplotlib.gridspec as gridspec
hr_data=pd.read_csv('..\data\human_one\HR_comma_sep.csv')
print(hr_data.shape)
# print(hr_data.head())
# 打乱数据的序列
data=shuffle(hr_data).iloc[:200,:]
# 生成数据每月加班时间和环境满意度
x=data['average_montly_hours'].tolist()
y1=data['satisfaction_level'].tolist()
y2=data['last_evaluation'].tolist()
t1=np.arctan2(y1,x)#用来显示颜色
t2=np.arctan2(y2,x)
# 绘制散点图
plt.figure(figsize=(8,4))
gs=gridspec.GridSpec(1,2)
ax1=plt.subplot(gs[0,0])
ax2=plt.subplot(gs[0,1])
ax1.scatter(x,y1,c=t1)
ax2.scatter(x,y2,c=t2)
ax1.set_xlabel('average_montly_hours')
ax1.set_ylabel('satisfaction_level')
ax2.set_xlabel('average_montly_hours')
ax2.set_ylabel('last_evaluation')
plt.show()

运行结果
在这里插入图片描述

4、例题4

请在3D坐标系下画出函数Z=3 (1-X)2 np.e(-(X2) - (Y+1)2)- 10(X/5 - X3 - Y5)np.e(-X2-Y2)- 1/3np.e(-(X+1)2 - Y*2);并将其投影至 x=-4 和 z=-7 平面上;并添加colorbar

# 请在3D坐标系下画出函数Z=3 (1-X)**2 np.e(-(X2) - (Y+1)2)- 10*(X/5 - X3 - Y5)*np.e(-X2-Y2)- 1/3*np.e(-(X+1)2 - Y**2);
# 并将其投影至 x=-4 和 z=-7 平面上;并添加colorbar
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x=np.arange(-4,4,0.25)
y=np.arange(-4,4,0.25)
# xy编织成网
x,y=np.meshgrid(x,y)
z=3*(1-x)**2*np.e**(-(x**2)-(y+1)**2)-10*(x/5-x**3-y**5)*np.e**(-x**2-y**2)- 1/3*np.e**(-(x+1)**2-y**2)
# 制作3d图
fig=plt.figure()
ax=Axes3D(fig)
m=ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=plt.get_cmap('Spectral'))
# plt.show()
#显示投影
ax.contourf(x,y,z,zdir='x',offset=-4)
ax.contourf(x,y,z,zdir='z',offset=-7)
# plt.show()
# 添加colorbar
plt.colorbar(m,shrink=.6)
plt.show()

运行结果
在这里插入图片描述

cmap的类型

实际上,画图的工具有很多,matplotlib知识其中的一种,目前为止我们所学到的知识可以帮助我们完成实际工程应用中的大部分画图任务,但如果想要追求更加完美的画图效果,大家可以参考一个工具:Seaborn,它在matplotlib基础上进行了更高级的封装,利用它我们可以更加方便的作出更有吸引力的图。

自学自用,matplotlib的学习到现在即将告一段落,希望可以和大家积极沟通交流,小伙伴们加油鸭,如有错误还请指正,不喜勿喷

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值