Matplotlib代码实操学习

一.前情提要

1.本文是代码结合知识点注释即为知识点

2.主要详细讲解折线图散点图柱状图

3.若想深入学习,建议阅读

【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩_bilibili

二.学习

①折线图

#Ⅰ引入
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#Ⅱ更改字体,还需要在后面的代码中引入该字体
matplotlib.rc("font",family='MicroSofy',weight='bold')
#方式二
my_font=font_manager.FontProperties(fname="填入字体的路径")

#Ⅲ设置图片大小
plt.figure(figsize=(20,8),dpi=80)
#figsize图片大小,20是宽,8是高,doi是每英寸上的点的个数可以让图片更清晰

#Ⅳ确定x的值,y的值
x=range(2,26,2)
#(1)2到26,步长为2,通过range设置的步长不能为小数
#(2)因此可以自己导入列表_xtick_labels[i/2 for i in range(4,49)]
y=[15,13,14.5,17,20,25,26,26,27,22,18,15]
#此处y是数据的值,而下面的plt.yticks是人为设置的y轴值

#如果x值相同的情况下再画一条线,直接添加一个y,并plt.plot(x,y_1)就可以
y_2=[19,13,19.5,19,20,25,29,29,29,29,12,15]

#Ⅴ方式①设置x轴的刻度
_xtick_labels=[i for i in range(2,25)]#感觉没用
plt.xticks(range(25,50))#可以明确表示x轴的数值
plt.yticks(range(min(y),max(y)+1))#可以明确表示y轴的数值

#方式②设置x轴的刻度
plt.xticks(x)
#此时x才是我们需要的,即上面设置的,若没有这个代码,x就不是我们需要的
#若为plt.xticks(range(2,24))则是从2到24且间隔为1,
# 在图中传x不等于图像可以显示,所以要使用plt.xticks(x)来具体表示x的值
# 且可以plt.xticks(_xtick_labels[::3])来取步长

#Ⅵ调整x轴的中文值
_x=x
_xtick_labels=["hello,{}".format(i) for i in _x]
#此处hello可以改为中文,如"10点{}分",{}的内容是_x的内容
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=90,fontproperties=my_font)
#前后两个值的具体数量要一致,rotation是角度,在此处引入字体

#Ⅶ添加描述信息
plt.xlabel('时间',fontproperties=my_font)
#记得添加fontproperties=my_font来确保中文可以显示
plt.ylabel('温度 单位(℃)',fontproperties=my_font)
plt.title('十点到十二点每分钟气温变化的情况',fontproperties=my_font)#标题

plt.xticks(x,_xtick_labels)

#Ⅷ开始画图,此处加label可以标注不同的线条,linestyle是线条形状,linewidth是线条粗细
plt.plot(x,y,label='自己',color='orange',linestyle=':')
plt.plot(x,y_2,label='别人',color='cyan',linestyle='--')

#Ⅸ绘制网格,网格线同样可以修改
plt.grid(alpha=0.5,linestyle=':')
#alpha是透明度

#注释两条线,Ⅷ处的label,此处prop是接受中文,其他地方接受中文不使用该方法,loc是注释的位置
plt.legend(prop=my_font,loc='upper left')

#Ⅹ展示出来
plt.show()

#ⅩⅠ保存图片
plt.savefig("./t1.png")
#保存到当前路径,t1是给图片取名

②散点图

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font=font_manager.FontProperties(fname='')
#引号内填字体途径

y_3=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,20]
y_10=[26,26,28,19,21,17,20,6,6,7,20,19,25,14,17,16,21,16,18,22,14,15,15,17,19,21,22,22,20,26]

#取两个x是为了让两个散点图分开
x_3=range(1,31)
x_10=range(51,81)

plt.figure(figsize=(20,8),dpi=80)

#plt.scatter()使用散点图
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)

#调整x轴的刻度
_x=list(x_3)+list(x_10)#减去中间多出的部分,因为x_3的31和x_10的51中间有空余

_xtick_labels=['3月{}'.format(i) for i in x_3]+['10月{}'.format(i-50) for i in x_10]
#如果上述代码分为两部分会报错,因为设置刻度时刻度位置和刻度标签的数量不匹配
#format(i-50)中-1是为了让刻度从1开始
plt.xticks(_x[::3],_xtick_labels[::3],fontproperties=my_font,rotation=45)

#添加图例
plt.legend(loc='upper left',prop=my_font)

#添加描述信息
plt.xlabel('时间',fontproperties=my_font)
plt.ylabel('温度',fontproperties=my_font)
plt.title('标题',fontproperties=my_font)
plt.show()

③柱状图

import matplotlib.pyplot as plt



# 定义数据

categories = ['A', 'B', 'C', 'D', 'E']  # x轴的类别

values = [23, 45, 56, 78, 90]  # 对应类别的值



# 创建柱状图

plt.bar(categories, values, color='skyblue', alpha=0.7)  # 绘制柱状图,设置颜色为天蓝色,透明度为0.7



# 添加标题和标签

plt.title('Example Bar Chart')  # 设置图表标题

plt.xlabel('Categories')  # 设置x轴标签

plt.ylabel('Values')  # 设置y轴标签



# 显示每个柱状图的数值

for i, value in enumerate(values):

    plt.text(i, value, str(value), ha='center', va='bottom')



# 添加网格线

plt.grid(True, linestyle='--', alpha=0.5)  # 显示网格线,设置线型为虚线,透明度为0.5



# 设置刻度标签旋转角度

plt.xticks(rotation=45)  # 设置x轴刻度标签的旋转角度为45度



# 调整布局

plt.tight_layout()  # 调整图表布局,防止文字重叠



# 显示图表

plt.show()





#定义了 categories 和 values,分别表示柱状图的类别和对应的值。

#plt.bar() 创建柱状图,传入类别和值,并设置柱状图的颜色为天蓝色,透明度为0.7。

# plt.title()、plt.xlabel() 和 plt.ylabel() 添加图表的标题、X轴标签和Y轴标签。

#plt.text() 在每个柱状图上显示具体的数值。

# plt.grid() 添加网格线,设置线型为虚线,透明度为0.5。

#plt.xticks() 设置x轴刻度标签的旋转角度为45度,以防止标签重叠。

# plt.tight_layout() 调整图表的布局,防止文字重叠。

# plt.show() 显示绘制的柱状图。

三.最后提示

1.其实柱状图、散点图、折线图基本内容差别不大,仔细阅读散点图笔记中的基础知识,再学习细微差别即可

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值