【数据操作与可视化】Matplotlib绘图-生成其他图表类型

【数据操作与可视化】Matplotlib绘图-生成其他图表类型

1、散点图

散点图跟折线图的区别是,折线图会将各个不同的坐标点连接起来绘制图形,这样我们就看不出来原来的坐标点是哪些了。而散点图会直接根据原来的坐标点来进行图形的绘制,可以从图上直接看出坐标点的位置,非常方便我们观测数据的分布和形状。

python 复制代码
x = np.linspace(0, 10, 100)   # 0到10之间的所有数据,分成100个组
y = np.sin(x)
# 绘图设置
plt.figure(figsize=(8, 4), dpi=100)  # 宽度和高度(英寸),dpi,每英寸像素值
plt.title('正余弦信号', color='red', fontsize=20, rotation=0, alpha=1)  # 添加标题,rotation角度旋转,alpha透明度
plt.xlabel('时间', fontsize=15, color='k', rotation=0)   ## 设置x和y轴的名称
plt.ylabel('电压', fontsize=15)
plt.xlim(-1, 11)         # 设置x和y轴的范围
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 12, 2), fontsize=15, rotation=0)      # 设置x和y周的刻度
plt.yticks([-1, -0.5, 0, 0.5, 1])
# 绘制散点图
plt.scatter(x, y, c='blue', s=10, marker='+', label='sin(x)')  # s参数是size
2、饼图

饼图一般用作观察数据的占比情况。

python 复制代码
# 生成画布
plt.figure(figsize=(8,4))
# 定义饼图相关的数据
values = [63.54, 34.76, 78.46]
labels = ['第一部分', '第二部分', '第三部分']
colors = ['red', 'blue', 'green']
# 绘图
explode = (0.15, 0, 0)   # 将某部分的内容分离出来,指定的值就是分割出来的块和其他两块之间的距离
# labeldistance 设置文本标签离圆心的位置,1.1表示离圆心是1.1倍半径的距离
# autopct 设置文本表示百分比的占比,.1f表示设置百分比的有效位数
plt.pie(values, explode=explode, labels=labels,colors=colors, labeldistance=1.1,
        autopct = '%.1f%%',
        shadow = True,
        startangle = 45, pctdistance = 0.6)
plt.axis('equal')    # 设置圆形显示的纵横比
plt.title('分布占比图', color='r')
plt.legend();
3、柱状图

饼图一般是用于查看分类数据的占比,而柱状图和条形图一般是用于查看分类数据的绝对值。

python 复制代码
# 柱状图
x = np.array([1,2,3,4,5,6])
y = np.array([866, 787, 964, 654, 798, 993])
# [(1, 866), (2, 787)...]
plt.bar(x, y, width=0.5, label='销售业绩')
plt.legend(loc=0);
# 添加标题
plt.title('上半年每月业绩表现')
# 添加数据标签
for a, b in zip(x, y):  # zip函数作用自动把x和y数组中的每一个值一一对应起来形成一个元组
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
# 设置自定义x轴刻度值
plt.xticks(x, [str(i+1)+'月' for i in range(6)])
plt.show();

如果想对条形图的数据进行排序后再做图,可以使用dict字典格式来实现:

python 复制代码
dic = {'1月': 2001, '2月': 3409, '3月': 2983, '4月': 2001, '5月': 2763, '6月': 2908}
# 针对dic进行排序
dic = dict(sorted(dic.items(), key = lambda kv:(kv[1], kv[0]), reverse=True))
plt.bar(dic.keys(), dic.values(), width=0.5, label='销售业绩')
4、直方图

直方图是一种观测数据频数的统计图,形式上跟柱状图一样,也是一个一个的长条。但是直方图是用长条形的面积表示频数或者概率,宽度表示组距,高度表示频数/组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。

直方图和柱状图的区别是,柱状图主要用于类别数据,而直方图主要用于连续数据。

python 复制代码
# 生成数据
data= np.random.randn(1000)    # 生成1000个符合正态分布的随机数, 均值为0,方差1
# bins参数表示将所有的数据等分成100份
plt.hist(data, bins=100, density=False, facecolor='b', edgecolor='k', alpha=0.7)  
plt.xlabel('区间')
plt.ylabel('频次')    # 出现的总的次数
plt.title('直方图')
plt.show();

试试将 density=False 修改为 True,看看会发生什么变化。

相关推荐
cxhello2 分钟前
消费者活着、心跳正常、日志干净,但它七天没拉过一条消息
python·kafka
砚底藏山河5 分钟前
【量化纯GET实战 #11】移动均线 MA:5 日 20 日 60 日怎么算怎么用
java·python·金融·maven
小吴学不废Java9 分钟前
Python 基础语法
开发语言·python
weixin_4334176710 分钟前
阿里视频大模型wan2.7‑t2v,可以生成视频
人工智能·python·音视频
sukioe24 分钟前
一张图、两把锁:AI 物流履约平台的确定性边界设计
人工智能·python·ai·langchain
布莱克60533 分钟前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列
CPETW33 分钟前
USB TO I2C_(Excel)_Scan ---- 1000KHz总线速率测试_A
c语言·开发语言·网络·科技·单片机
2601_9622035138 分钟前
【SpringBoot3】面向切面 AspectJ AOP 使用详解
开发语言·前端·python
程序员大雄学编程41 分钟前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
何以解忧,唯有..41 分钟前
LangChain 中 Pydantic 格式输出:结构化输出的完整指南
java·开发语言·langchain