python matplotlib

1.1绘制直线,折线图(单坐标)

import random
from matplotlib import pyplot as plt

"""如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟的气温变化"""

fig = plt.figure(figsize=(20, 8), dpi=80)  # 宽20高8

x = [i for i in range(0, 120)]
y = [random.randint(20, 35) for i in range(120)]

# 在10点时
x_label = [f"10h{i}m" for i in range(1, 60)]
# 在11点时
x_label += [f"11h{i}m" for i in range(1, 60)]

import matplotlib
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 12}
matplotlib.rc("font", **font)

# 设置描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(摄氏度)")
plt.title("10点到12点每分钟内的气温变换情况",fontsize=20)

plt.yticks([i for i in range(20, 36)], [f"{i}度" for i in range(20, 36)])  # 后面的参数设置坐标轴显示的样式
plt.xticks(x[::6], x_label[::6], rotation=0)  # 要保证前后的一一对应,rotation旋转度数
plt.plot(x, y, label="自己", color="red")
# 绘制网格
plt.grid(alpha=0.4)  # alpha设置透明度
# 添加图例
plt.legend(loc=0)  # loc设置位置

plt.savefig("./sig_size.png")  # 保存图片,可以保存为svg格式的矢量图
plt.show()

绘制直线所用函数

  • 1.创建画布 -- plt.figure()

  • plt.figure(figsize=(), dpi=)
        figsize:指定图的长宽
        dpi:图像的清晰度
        返回fig对象
    
  • 2.绘制图像 -- plt.plot(x, y)

  • 3.显示图像 -- plt.show()

  • 4.plt.xticks(x, **kwargs)     x:要显示的刻度值

  • 5.plt.yticks(y, **kwargs)     y:要显示的刻度值

  • 颜色字符 [color=‘r’]风格字符 [linestyle='-']
    r 红色- 实线
    g 绿色- - 虚线
    b 蓝色-. 点划线
    w 白色: 点虚线
    c 青色' ' 留空、空格
    m 洋红
    y 黄色
    k 黑色
    在绘图时传入 label 参数,并最后调用plt.legend()显示图例说明,对于 legend 还是传入参数,控制图例说明显示的位置
  • Location StringLocation Code
    'best'0
    'upper right'1
    'upper left'2
    'lower left'3
    'lower right'4
    'right'5
    'center left'6
    'center right'7
    'lower center'8
    'upper center'9
    'center'10
  • # 绘制网格
    plt.grid(alpha=0.4)  # alpha设置透明度

1.2绘制直线,折线图(多坐标)面向对象

matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区)

nrows  ,ncols  设置有几行几列坐标系
    
返回值:    
fig : 图对象
axes : 返回相应数量的坐标系

设置标题和坐标轴刻度方法与上述不同:
    set_xticks
    set_yticks
    set_xlabel
    set_ylabel

 数据自拟


fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)


axes[0].plot(x, y1, label="0")
axes[1].plot(x, y2, color="r", linestyle="--", label="1")

# 添加x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)

# 刻度显示
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])#字符串

# 2.2 添加网格显示
# plt.grid(alpha=0.5)
axes[0].grid(alpha=0.5)
axes[1].grid(alpha=0.5)

# 2.3 添加描述信息
#axes[0].set(ylabel='温度', xlabel='时间', title='中午11点--12点某城市温度变化图')
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)

# # 2.4 图像保存
plt.savefig("./test.png")

# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)


# 3.图像显示
plt.show()

2. 散点图:

  • plt.scatter(x, y)
import numpy as np
import random
from matplotlib import pyplot as plt

x = np.arange(10)
y = np.random.randn(10)
plt.scatter(x, y, color='r')
plt.show()

3. 柱状图

plt.bar(x, width, align='center', **kwargs)

   
x : 需要传递的数据

width : 柱状图的宽度

align : 每个柱状图的位置对齐方式
    {‘center’, ‘edge’}, optional, default: ‘center’

**kwargs :
color:选择柱状图的颜色
np.random.seed(1)
x = np.arange(5)
y = np.random.randn(5)

fig, axes = plt.subplots(ncols=2)

vert_bars = axes[0].bar(x, y, color='r', align='center')
horiz_bars = axes[1].barh(x, y, color='b', align='center')
#在水平或者垂直方向上画线
axes[0].axhline(0, color='gray', linewidth=2)
axes[1].axvline(0, color='gray', linewidth=2)
plt.show()

参考链接:

​ Matplotlib — Visualization with Python

打印命令摘要 — Matplotlib 2.0.2 文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值