十二.matplotlib视图

目录

十二.matplotlib视图

1 绘图属性

常用函数

1.1 绘图属性-样式-颜色

演示:

--1--

--2--

1.2 绘图样式-坐标轴刻度

演示1:

演示2:

1.3 绘图样式-网格文本

网格plt.grid()

文本 plt.text()

注释

图片保存

2 常用视图

2.1 双轴图*

2.2 折线图

单条折线

多条折线

2.3 柱状图bar

多柱

2.4 饼图pie

2.5 箱型图boxplot()

2.6 散点图scatter()

2.7 热力图imshow()*


十二.matplotlib视图

1 绘图属性

常用函数

pyplot函数描述
text()在Axes对象任意位置添加文字
xlabel()为x轴添加标签
ylabel()为y轴添加标签
title()为Axes对象添加标题
legend()为Axes对象添加图例
annotate()为Axes对象添加注释(箭头可选)
suptitle()为Figure对象添加中心化的标题

1.1 绘图属性-样式-颜色

.plot(参数)说明
marker标记
markersize标记大小
markeredgecolor标记边框颜色
markeredgewidth标记边缘宽度
ls:line style线样式
lw:line width线宽度
label标签
mfc标记的背景颜色
alpha透明度(0-1之间)--线的.
c : color线颜色

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
​
plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False

演示:

--1--
plt.figure(figsize=(13,4),dpi=150)
x = np.arange(1,16)
plt.plot(x,np.sin(x),color='blue',linestyle='--',linewidth=1,label='sin(x)',marker='o',markersize=4,markeredgecolor='yellow',markeredgewidth=10,mfc='orange',alpha=0.8)
​
plt.legend(loc='best',fontsize=19)

--2--
plt.figure(figsize=(8,5),dpi=150)
x = np.linspace(0,10)
​
plt.plot(x,np.sin(x),c="g",marker="D",ls="-.",lw=1, mfc="r",label="sin")
plt.plot(x,np.cos(x),c="r",marker="o",ls="-.",lw=1, mfc="y",label="cos",markersize=3,alpha=0.5)
plt.plot(x,-np.sin(x),c="b",marker="o",ls="-.",lw=1, mfc="y",label="-sin",markersize=5,markeredgecolor="r",markeredgewidth=3)
plt.legend(
    loc="best",
    # 图例大小
    fontsize=10
)

1.2 绘图样式-坐标轴刻度

plt.xticks(ticks=np.arange(0,11,1))设置x轴刻度
plt.yticks(ticks=np.arange(0,2.6,0.2))设置y轴刻度
ticks设置范围
fontsize设置字体大小
color设置颜色
labels显示刻度标签
ha水平对齐方式

演示1:

plt.figure(figsize=(15,10),dpi=120)
x = np.linspace(0,10)
plt.plot(x,np.sin(x),marker="D",ls="-.",lw=1)
plt.xticks(np.arange(0,10,1),fontsize=20)
plt.yticks(np.arange(-1.2,1.2,0.1),fontsize=10,color="r")
​
plt.show()
​

演示2:

plt.figure(figsize=(8,5),dpi=150)
x = np.linspace(1,10)
y = np.log(x)
​
plt.plot(x,y)
plt.xticks(ticks=np.arange(0,11,2),labels=['鸡哥','凡哥','坤哥','吴哥','东阿','建个'], fontsize=20,color="blue",ha="left")
plt.yticks(ticks=[0,2,4],labels=["min","2","max"],color="orange",ha="right",fontsize=20)
plt.ylabel('情感指数',fontsize=30)
plt.xlabel('哥哥们',fontsize=6)
plt.show()

1.3 绘图样式-网格文本

网格plt.grid()

plt.figure(figsize=(5,3),dpi=150)
x = np.linspace(0,10)
y = np.sin(x)
plt.plot(x,y)
​
# 网格线
"""
axis:某个轴显示网格线
--不加这个参数表示xy轴都有.
"""
plt.grid(ls="--",lw=0.5,c="g",axis="y")

文本 plt.text()

plt.figure(figsize=(5,3),dpi=150)
x = np.linspace(1,10,10)
y = np.random.randint(10,50,size=10)
plt.plot(x,y,marker='o')
#文本显示:
for xy in zip(x,y):
    plt.text(x=xy[0],y=xy[1],s=xy,fontsize=8,color="r",ha="center",va="center")

注释

plt.figure(figsize=(5,3),dpi=150)
x = np.linspace(1,10,10)
y = np.array([45,65,22,37,87,56,54,59,45,51])
plt.plot(x,y,marker='o')
​
#注释一下:
plt.annotate(
    text="最大值",   # 标注的内容
    xy=(5,87),      # 标注的坐标点
    xytext=(1,85),  # 标注字体位置
    # 箭头样式
    arrowprops={
        "width":0.2,       # 线条的宽度
        "headwidth":4,     # 箭头的大小
        "facecolor":"red", # 箭头背景颜色
    }
    )

图片保存

fig = plt.figure(figsize=(5,3),dpi=150)
​
# plt.savefig("abc.png")
fig.savefig(fname="abc.png",dpi=200)

2 常用视图

2.1 双轴图*

在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现图像,从而获取更有效的数据。Matplotlib 提供的 twinx()twiny() 函数,除了可以实现绘制双轴的功能外,还可以使用不同的单位来绘制曲线,比如一个轴绘制对函数,另外一个轴绘制指数函数。

fig = plt.figure(figsize=(8,5),dpi=150)
​
axes1 = plt.gca() # 得到当前轴域
x = np.arange(1,11)
axes1.plot(x,np.exp(x),'go-')
axes1.set_ylabel('指数函数',c="g")
​
# 添加双轴(共享一个x轴)
axes2 = axes1.twinx()
​
axes2.plot(x, np.log(x),'ro-')
#绘制对数函数
axes2.set_ylabel('对数函数',c="r")
#绘制图例
fig.legend(labels = ('指数函数','对数函数'),loc='lower right')

2.2 折线图

单条折线

x = ["Mon", "Tues", "Wed", "Thur", "Fri","Sat","Sun"]
y = np.random.randint(25,55,size=7)
plt.plot(x, y, "g", marker='o', markersize=5, label="周活")
# 绘制坐标轴标签
plt.xlabel("时间")
plt.ylabel("用户活跃度")
plt.title("活跃度")
# 显示图例
plt.legend(loc="best")
# 调用 text()在图像上绘制注释文本
# x1、y1表示文本所处坐标位置,ha参数控制水平对齐方式, va控制垂直对齐方式,str(y1)表示要绘制的文本
for x1, y1 in zip(x, y):
    plt.text(x1, y1, str(y1), ha='center', va='bottom', fontsize=10)

多条折线

# 对比两天内同一时刻温度的变化情况
x = [5, 8, 12, 14, 16, 18, 20]
y1 = [18, 21, 29, 31, 26, 24, 20]
y2 = [15, 18, 24, 30, 31, 25, 24]
​
plt.plot(x, y1, 'r',marker='o', markersize=5)
plt.plot(x, y2, 'b', marker='o',markersize=5)
plt.title('温度对比折线图')  # 折线图标题
plt.xlabel('时间(h)')  # x轴标题
plt.ylabel('温度(℃)')  # y轴标题
​
# 给图像添加注释,并设置样式
for a, b in zip(x, y1):
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
for a, b in zip(x, y2):
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)

2.3 柱状图bar

#准备数据
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
#绘制柱状图
​
plt.xlabel("语言")
plt.ylabel("热度")
plt.bar(langs,students)
plt.show()

多柱

df_data = pd.DataFrame(
    np.random.randint(65,95,size=(6,3)),
    index = ["张三","李四","王五","赵六","坤哥","凡哥"],
    columns=["语文","数学","英语"]
)
plt.figure(figsize=(8,6),dpi=200)
​
width=0.2
​
x = np.arange(len(df_data.index))
# 绘制语文成绩
plt.bar(x,df_data["语文"],width=width,label="语文",color="red")
# 绘制数学成绩
plt.bar(x+width,df_data["数学"],width=width,label="数学",color="green")
# 绘制英语成绩
plt.bar(x+width*2,df_data["英语"],width=width,label="英语",color="orange")
plt.xticks(x+width,labels=df_data.index)
​
plt.legend()
plt.show()

2.4 饼图pie

sizes = [2,5,12]
labels = ['娱乐','育儿','饮食']
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False,startangle=100)
plt.show()
​
# labels为饼图加标签
# autopct 控制饼图内百分比设置
# '%1.1f%%'指小数点前后位数
# shadow是在饼图下画一个阴影,False即不画

2.5 箱型图boxplot()

  • 显示一组数据的最大值,最小值,中位数及上下四分位数.

plt.figure(figsize=(5,3),dpi=150)
x1 = np.random.randint(10,100,20)
x2 = np.random.randint(10,100,20)
x3 = np.random.randint(10,100,20)
​
plt.boxplot([x1,x2,x3])
plt.show()

2.6 散点图scatter()

  • 散点图用于在水平轴和垂直轴上绘制数据点,他表示了因变量随自变量变化的趋势,通俗的讲,它反映的是一个变量受另一个变量的影响程度

x = np.arange(1,8,1)
y = np.arange(10,80,10)
​
plt.scatter(x,y)
df = pd.DataFrame({
    "月份": pd.date_range("2022-01-01",periods=100,freq="D"),
    "广告费用":np.random.randint(10000,80000,size=100),
    "收入状况":np.random.randint(10000,80000,size=100)
})
​
x,y = df.广告费用,df.收入状况
​
plt.figure(figsize=(7,5),dpi=150)
plt.scatter(x,y)

2.7 热力图imshow()*

  • 热力图是一种通过对色块着色来显示数据的统计图表,绘图时,需要指定颜色映射的规则.

df = pd.DataFrame({
    "一月":np.random.randint(0,20,size=8),
    "二月":np.random.randint(0,20,size=8),
    "三月":np.random.randint(10,20,size=8),
    "四月":np.random.randint(20,22,size=8),
    "五月":np.random.randint(20,25,size=8),
    "六月":np.random.randint(20,30,size=8)
})
y = ["湖南","湖北","陕西","甘肃","浙江","江西","广东","四川"]
x = df.columns
data = df.values
​
plt.figure(figsize=(7,5),dpi=150)
​
#### 热力图
plt.imshow(data,cmap="Blues")
​
#### 修改刻度
plt.xticks(range(len(x)),x)
plt.yticks(range(len(y)),y)
​
#### 添加文字
for num_x in range(len(x)):
    for num_y in range(len(y)):
        plt.text(
        x=num_x,
        y=num_y,
        s=data[num_y,num_x],
        ha="center",
        va="center",
        fontsize=15
        )
​
# 颜色条
plt.colorbar()
plt.show()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金灰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值