Python之matplotlib画图总结

由于可视化工作的使用越来越广泛,使用python画图成为重要趋势,该文章总结一下各种图形绘画,并提出一些小技巧和方法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、折线图

折线图作为比较常见以及相对简单深受用户喜爱。下面以一个简单例子进行展现。有疑问的可以在评论区指出。

import matplotlib.pyplot as plt     #导入画图库

import pandas as pd          

df = pd.read_csv(r'C:\XXX\aaa.csv',encoding='gbk') #打开csv文件

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams['font.sans-serif'] = 'FangSong'  # 设置字体为仿宋(FangSong)

#上述两行可以使中文正常显示

a=df['X轴']  #读取该列名下的所有数据
b=df['Y轴']  #读取该列名下的所有数据

plt.xlabel("日期", loc='center') #添加x轴标题
plt.ylabel("数据", loc='center') #添加y轴标题,如果y轴标题需要特殊字符,推荐使用latex格式,例如 "体积/"+r'$cm^3$'

plt.plot(a, b, 'b:o', label='时间数据')#画折线图,b代表蓝色,o代表每个点数据用圆圈显示,:代表虚线,-代表实线

#plt.plot(a, X, 'y', label='时间数据2')  #如果需要在一张图上画多条折线,则多添加几行该语句

plt.legend()  #显示图例
plt.savefig(r'C:\xxx\XXX.png')  #将画的图片进行保存
plt.show()  #展示图片

 效果展示:

 二、柱状图

1、标准柱状图代码如下(示例):

import csv
import matplotlib.pyplot as plt

f = csv.reader(open(r'C:\XXX\aaa.csv', 'r'))    #打开csv文件

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams["axes.unicode_minus"] = False  #正确显示正负号

#上述两行可以使中文正常显示

data = list(f)  # csv数据转换为列表


# 画图,plt.bar()可以画柱状图
for i in range(1,len(data)):
	print(data[1])
	for j in range(len(data[1])):
		data[1][j]=int(data[1][j]) #将y轴数据转换成整型
	plt.bar(data[0], data[1])

plt.xlabel("日期", loc='center') #添加x轴标题
plt.ylabel("数据", loc='center') #添加y轴标题,如果y轴标题需要特殊字符,推荐使用latex格式,例如 "体积/"+r'$cm^3$'

plt.title("销量分析")

plt.savefig(r'C:\xxx\XXX.png')  #将画的图片进行保存
plt.show()  #展示图片

 效果展示: 

2、并列柱状图代码如下(示例):

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


df = pd.read_csv(r'C:\XXX\xxx.csv',encoding='gbk')

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams["axes.unicode_minus"] = False  #正确显示正负号

a = df['衬衫']
b = df['运动鞋']
c = df['帽子']

x = df['x轴']

# 有三种类型的数据,n设置为3
total_width, n = 0.8, 3
# 每种类型的柱状图宽度
width = total_width / n

# 重新设置x轴的坐标
x = x - (total_width - width) / 2  #让其居中显示


# 画柱状图
plt.bar(x, a, width=width, label="衬衫")
plt.bar(x + width, b, width=width, label="运动鞋")
plt.bar(x + 2*width, c, width=width, label="帽子")
# 显示图例
plt.legend(loc="upper right")
# 显示柱状图
plt.show()

效果展示:  

3、堆叠柱状图代码如下(示例):

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv(r'C:\XXX\XX.csv',encoding='gbk')

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams["axes.unicode_minus"] = False  #正确显示正负号

a = df['衬衫']
b = df['运动鞋']
c = df['帽子']

x = df['x轴']


# 画柱状图
plt.bar(x, a,  label="衬衫")
plt.bar(x, b,bottom=a, label="运动鞋")
plt.bar(x, c, bottom=b,label="帽子")
# 显示图例
plt.legend(loc="upper right")
# 显示柱状图
plt.show()

效果展示:  

4、横向柱状图代码如下(示例):

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv(r'C:\XXX\XX.csv',encoding='gbk')

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams["axes.unicode_minus"] = False  #正确显示正负号

a = df['衬衫']
b = df['运动鞋']
c = df['帽子']

x = df['x轴']


# 有三种类型的数据,n设置为3
total_width, n = 0.8, 3
# 每种类型的柱状图宽度
width = total_width / n

# 重新设置x轴的坐标
x = x - (total_width - width) / 2  #让其居中显示


# 画柱状图
plt.barh(x, a, label="衬衫",height=width)
plt.barh(x, b, label="运动鞋",height=width)
plt.barh(x, c,  label="帽子",height=width)
# 显示图例
plt.legend(loc="upper right")
# 显示柱状图
plt.show()

 效果展示: 

5、正负柱状图代码如下(示例):

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv(r'C:\XXX\XX.csv',encoding='gbk')

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为简黑(SimHei)
plt.rcParams["axes.unicode_minus"] = False  #正确显示正负号

a = df['衬衫']
b = df['运动鞋']
# c = df['帽子']

x = df['x轴']


# 画柱状图
plt.bar(x, a, label="衬衫")
plt.bar(x, -b, label="运动鞋")
# plt.bar(x, c, label="帽子")
# 显示图例
plt.legend(loc="upper right")
# 显示柱状图
plt.show()

  效果展示: 

总结

以上就是今天要讲的内容,本文介绍了python画各种图的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值