一些碎碎念~
⛳ 你好哇,我是小瑾,在校大学生一位哦~
⛵目前博文包含课程设计、csp刷题、算法介绍、当下科技热点分享、网站软件推荐等等哦,还会更新学习到的深度学习、视觉等方面的知识~
⛄一个希望与大家携手共进的小博主
✍关注我,让你的代码之旅不再孤独!
Matplotlib简介
☘️ Matplotlib是Python中最流行的绘图库之一,用于生成二维图形和图表。它提供了一整套命令式函数来控制图形的各个方面,类似于MATLAB。它的核心模块是
pyplot
,提供了绘制图形的高层接口。
⭐️ 核心功能
- 基本绘图:折线图、柱状图、散点图、饼图等。
- 复杂图形:热力图、三维图、等高线图等。
- 自定义:图例、标题、标签、颜色、线型、注释等。
- 交互:支持交互式绘图,可以在窗口中缩放、平移等。
使用前的准备:
✅ 1.下载pycharm(或者其他python编辑器)
✅ 2.打开终端
✅ 3.输入:pip install matplotlib
代码实践:
(题目我是分开列的,代码就全部总结到最底下的代码块里啦~ )
(1) 利用csv,Numpy和Pandas创建商店2022年模拟营业数据data.csv,包含两列(日期date、销量amount)。数据随机365条,date起于2022-01-01止于2022-12-31,amount范围[300,600],参考代码如下,创建的文件效果如图所示。
(2)利用pandas读取文件data.csv中数据,创建DataFrame,删除所有缺失值。
(3)利用matplotlib生成折线图,按每天进行统计,显示商店每天销量,图形保存为本地文件day_amount_plot.png。实验效果如图所示。
(4)利用matplotlib生成柱状图,按月份进行统计,显示商店每月的销量情况,并把图形保存为本地文件month_amount_bar.png。实验效果如图所示。分析数据,找出相邻两个月最大涨幅,并把涨幅最大的月份写入到文件maxMonth.txt中。
(5)利用matplotlib生成饼图,按季度进行统计,显示商店4个季度的销量分布情况,并把图形保存为本地文件season_amount_pie.png。实验效果如图所示。
提示:season1= df1:3.sum() #第1季度(01-03月)数据统计
饼图:plt.pie([season1, season2, season3, season4],labels=["season1", "season2", "season3", "season4"])
import csv
import random
import datetime
with open(r"data.csv","w+",newline='') as csvfile:
wr=csv.writer(csvfile,dialect="excel")
wr.writerow(["data","amount"])
startDate=datetime.date(2022,2,2)
for i in range(365):
amount=int(random.random()*301+300)
wr.writerow([startDate,amount])
startDate=startDate+datetime.timedelta(days=1)
import numpy as np
import pandas as pd
f=open(r"Data.csv",newline='')
arr1=np.arange('2022-01-01','2023-01-01',dtype='datetime64[D]')
arr2=np.random.randint(300,600,size=[len(arr1)])
data=pd.DataFrame({'date':arr1,'amount':arr2})
data.to_csv('Data.csv',index=False)
f.close()
df=pd.read_csv("data.csv")
df=df.dropna()
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(df["date"],df["amount"],label="day->amount",color="red",linewidth=2)
plt.title("2022 Day Business Volume of Wpf Store")
plt.xlabel("day")
plt.ylabel("amount")
plt.xlim("2022-01-01","2021-01-01")
plt.legend()
plt.savefig("day_amount_plot.png")
plt.show()
df=pd.read_csv("data.csv",encoding="utf-8")
df=df.dropna()
df1=df
df1["month"]=df1["date"].map(lambda x: x[:x.rindex('-')])
df1=df1.groupby(by="month",as_index=False).sum()
print(df1)
plt.figure(figsize=(12,6))
T2=np.arange(1,13)
plt.bar(T2,df1["amount"],label="month->amount",color="blue")
plt.title("2022 Month Business Volume of Wpf Store")
plt.xlabel("month")
plt.ylabel("amount")
plt.xlim(1,12)
plt.xticks(np.arange(1,13,1),['2022-01','2022-02','2022-03','2022-04','2022-05','2022-06','2022-07','2022-08','2022-09','2022-10','2022-11','2022-12'])
plt.legend()
plt.savefig("month_amount_bar.png")plt.show()
df2=df1.drop("month", axis=1).diff()
m=df2["amount"].nlargest(1).keys()[0]
with open("max_month.txt", 'w') as txtfile:
txtfile.write(df1.loc[m,"month"])
txtfile.close()
season1= df1[:3]['amount'].sum()
season2 = df1[3:6]['amount'].sum()
season3= df1[6:9]['amount'].sum()
season4= df1[9:12]['amount'].sum()
plt.figure(figsize=(12,6))
plt.pie([season1, season2, season3, season4],labels=["season1", "season2", "season3", "season4"])
plt.title("2022 Season Business Volume of Wpf Store")#设置图标题
plt.savefig('season_amount_pie.png')
plt.show()