一.前情提要
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.其实柱状图、散点图、折线图基本内容差别不大,仔细阅读散点图笔记中的基础知识,再学习细微差别即可
标签:plt,20,代码,Matplotlib,xticks,柱状图,实操,font,my From: https://blog.csdn.net/omit250/article/details/137233167