您现在的位置是:首页 >技术杂谈 >python实现折线图和条形图网站首页技术杂谈

python实现折线图和条形图

云朵里有星星 2023-05-17 04:00:02
简介python实现折线图和条形图

画图的部分函数

pandas

读取数据
相关包:import pandas as pd
函数:df=pd.read_excel(“文件名”) #读取excel文件
df.head(n)#查看前n行
df.tail(n)#查看后n行
df.shape #查看行数和列数
df.columns # 查看列索引
df.index #查看行索引
df.info() #查看索引、数据类型和内存信息
df.describe()#查看数值型列的汇总统计
df.apply(pd.Series.value_counts)#查看每一列的唯一值和计数
df.sort_values(“语文”,ascending=False)#按语文降序排序
df.groupby([‘省份’,‘城市’])#多列分组

matplotlib.pyplot

导包:import matplotlib.pyplot as plt

🕐 plt.rcParams[‘font.sans-serif’] = [‘Microsoft YaHei’]# 防止字体乱码
🕐plt.rcParams[‘axes.unicode_minus’] = False # 解决负号显示为方块的问题
🕐fig = plt.figure(参数)#生成一个画板
( num : 图像编号或名称,数字为编号,字符串为名称
figsize : 指定figure的宽和高,单位为英寸
dpi : 指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80
facecolor : 背景的颜色
edgecolor : 边框颜色
frameon : 是否显示边框)
🕐fig ,ax = plt.subplots(3,3)#生成a*b张子图
🕐fig.add_subplot(2, 2, 1)或者fig.add_subplot(221) #函数中2,2,1表示的意思是创建一个子图
🕐plt.plot(x,y,format_string,**kwargs)#折线图,x自变量,y因变量,format_string:颜色-每个点的标记样式-线样式,**kwargs:表示更细致的表达(优先级高于format_string)
🕐plt.xticks(np.linspace(a,b,n,endpoint=bool))#a,b:x坐标的范围,n:x坐标分成几等分,endpoint:包不包括最后一个,False表示不包括,True表示包括
🕐plt.show()#显示图像
🕐plt.legend(frameon=False,loc=“upper right”,fontsize=‘small’)#frameon有无框,false为无,loc图像位置,fontsize图像大小
🕐 plt.text(x, y,‘文字内容’,fontsize=18)#x,y表示添加文字的位置坐标,fontsize文字大小
🕐plt.xlabel()#横轴坐标
🕐plt.ylabel()#纵轴坐标
🕐plt.bar(x, y, width,color, edgecolor, bottom, linewidth, align, tick_label, align)#柱状图
(width:表示柱状图的宽度,取值在0~1之间,默认为0.8
color:柱状图的填充色
edgecolor:柱状图的边框颜色
bottom:柱状图底部离横轴的距离
linewidth:柱状图边框宽度
tick_label:柱状图的刻度标签,也可直接将标签赋值给x
align:指定x轴上对齐方式,“center”,"lege"边缘
plt.barh() # 水平柱状图)

折线图

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 防止字体乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题
df = pd.read_excel("贵州鲜鸡蛋价格表.xlsx", header=0)
df['日期'] = pd.to_datetime(df['日期']).dt.date
df1 = df.loc[:, ["地区", "价格", "日期"]]
allData = df1.groupby("地区")
print(len(allData))
plt.figure(figsize=(6, 10), dpi=150, facecolor='pink')
index = 1

for name, value in allData:
    print(name)
    print(value["日期"])
    ax1 = plt.subplot(len(allData), 1, index)
    ax1.plot(np.array(value["日期"]), value["价格"])
    ax1.set_xlabel("日期",fontsize =8)
    ax1.set_ylabel("价格(kg/斤)",fontsize =8)
    ax1.set_title(name,fontsize =8)
    plt.tick_params(axis='both', labelsize=8)
    index += 1
plt.show()

在这里插入图片描述

条形图

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题
df = pd.read_excel("贵州鲜鸡蛋价格表1.xlsx")
df['日期'] = pd.to_datetime(df['日期']).dt.strftime('%Y-%m')
df.drop_duplicates(inplace=True)
df1 = df.groupby("地区")
plt.figure(figsize=(20, 8), dpi=80)
# 条形图宽度
n = -1
width = 0.9
for name, value in df1:
    print(value)
    array = np.arange(len(value))
    plt.bar(array + n * width / 3, value["价格"], label=name, width=width / 3)
    plt.xticks(array,value["日期"])
    n += 1
plt.legend() # 显示label
plt.xlabel("日期")
plt.ylabel("价格")
plt.show()

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。