matplotlib 基本操作

使用matplotlib时遇到一些问题,特记录在此

1. 图表中中文不能正常显示

新建pyhton脚本文件 matplotlib_sup_ch.py

# matplotlib_sup_ch.py
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

cplt = plt

在需要绘图的地方将cplt导入使用,就可以解决中文不能正常显示的问题

# test.py
from matplotlib_sup_ch import cplt as plt
import math
import numpy as np

if __name__ == '__main__':

    x = list(np.linspace(0, 2*math.pi, 100))  # 从[0, 2π]中取100个数据点
    y = [math.cos(e) for e in x]

    plt.title('cos曲线')
    plt.xlabel('弧度')
    plt.plot(x, y)
    plt.show()

在这里插入图片描述

2. matplotlib中可用的颜色列表

新建color.py

# color.py
cnames = {
'aliceblue':            '#F0F8FF',
'antiquewhite':         '#FAEBD7',
'aqua':                 '#00FFFF',
'aquamarine':           '#7FFFD4',
'azure':                '#F0FFFF',
'beige':                '#F5F5DC',
'bisque':               '#FFE4C4',
'black':                '#000000',
'blanchedalmond':       '#FFEBCD',
'blue':                 '#0000FF',
'blueviolet':           '#8A2BE2',
'brown':                '#A52A2A',
'burlywood':            '#DEB887',
'cadetblue':            '#5F9EA0',
'chartreuse':           '#7FFF00',
'chocolate':            '#D2691E',
'coral':                '#FF7F50',
'cornflowerblue':       '#6495ED',
'cornsilk':             '#FFF8DC',
'crimson':              '#DC143C',
'cyan':                 '#00FFFF',
'darkblue':             '#00008B',
'darkcyan':             '#008B8B',
'darkgoldenrod':        '#B8860B',
'darkgray':             '#A9A9A9',
'darkgreen':            '#006400',
'darkkhaki':            '#BDB76B',
'darkmagenta':          '#8B008B',
'darkolivegreen':       '#556B2F',
'darkorange':           '#FF8C00',
'darkorchid':           '#9932CC',
'darkred':              '#8B0000',
'darksalmon':           '#E9967A',
'darkseagreen':         '#8FBC8F',
'darkslateblue':        '#483D8B',
'darkslategray':        '#2F4F4F',
'darkturquoise':        '#00CED1',
'darkviolet':           '#9400D3',
'deeppink':             '#FF1493',
'deepskyblue':          '#00BFFF',
'dimgray':              '#696969',
'dodgerblue':           '#1E90FF',
'firebrick':            '#B22222',
'floralwhite':          '#FFFAF0',
'forestgreen':          '#228B22',
'fuchsia':              '#FF00FF',
'gainsboro':            '#DCDCDC',
'ghostwhite':           '#F8F8FF',
'gold':                 '#FFD700',
'goldenrod':            '#DAA520',
'gray':                 '#808080',
'green':                '#008000',
'greenyellow':          '#ADFF2F',
'honeydew':             '#F0FFF0',
'hotpink':              '#FF69B4',
'indianred':            '#CD5C5C',
'indigo':               '#4B0082',
'ivory':                '#FFFFF0',
'khaki':                '#F0E68C',
'lavender':             '#E6E6FA',
'lavenderblush':        '#FFF0F5',
'lawngreen':            '#7CFC00',
'lemonchiffon':         '#FFFACD',
'lightblue':            '#ADD8E6',
'lightcoral':           '#F08080',
'lightcyan':            '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen':           '#90EE90',
'lightgray':            '#D3D3D3',
'lightpink':            '#FFB6C1',
'lightsalmon':          '#FFA07A',
'lightseagreen':        '#20B2AA',
'lightskyblue':         '#87CEFA',
'lightslategray':       '#778899',
'lightsteelblue':       '#B0C4DE',
'lightyellow':          '#FFFFE0',
'lime':                 '#00FF00',
'limegreen':            '#32CD32',
'linen':                '#FAF0E6',
'magenta':              '#FF00FF',
'maroon':               '#800000',
'mediumaquamarine':     '#66CDAA',
'mediumblue':           '#0000CD',
'mediumorchid':         '#BA55D3',
'mediumpurple':         '#9370DB',
'mediumseagreen':       '#3CB371',
'mediumslateblue':      '#7B68EE',
'mediumspringgreen':    '#00FA9A',
'mediumturquoise':      '#48D1CC',
'mediumvioletred':      '#C71585',
'midnightblue':         '#191970',
'mintcream':            '#F5FFFA',
'mistyrose':            '#FFE4E1',
'moccasin':             '#FFE4B5',
'navajowhite':          '#FFDEAD',
'navy':                 '#000080',
'oldlace':              '#FDF5E6',
'olive':                '#808000',
'olivedrab':            '#6B8E23',
'orange':               '#FFA500',
'orangered':            '#FF4500',
'orchid':               '#DA70D6',
'palegoldenrod':        '#EEE8AA',
'palegreen':            '#98FB98',
'paleturquoise':        '#AFEEEE',
'palevioletred':        '#DB7093',
'papayawhip':           '#FFEFD5',
'peachpuff':            '#FFDAB9',
'peru':                 '#CD853F',
'pink':                 '#FFC0CB',
'plum':                 '#DDA0DD',
'powderblue':           '#B0E0E6',
'purple':               '#800080',
'red':                  '#FF0000',
'rosybrown':            '#BC8F8F',
'royalblue':            '#4169E1',
'saddlebrown':          '#8B4513',
'salmon':               '#FA8072',
'sandybrown':           '#FAA460',
'seagreen':             '#2E8B57',
'seashell':             '#FFF5EE',
'sienna':               '#A0522D',
'silver':               '#C0C0C0',
'skyblue':              '#87CEEB',
'slateblue':            '#6A5ACD',
'slategray':            '#708090',
'snow':                 '#FFFAFA',
'springgreen':          '#00FF7F',
'steelblue':            '#4682B4',
'tan':                  '#D2B48C',
'teal':                 '#008080',
'thistle':              '#D8BFD8',
'tomato':               '#FF6347',
'turquoise':            '#40E0D0',
'violet':               '#EE82EE',
'wheat':                '#F5DEB3',
'white':                '#FFFFFF',
'whitesmoke':           '#F5F5F5',
'yellow':               '#FFFF00',
'yellowgreen':          '#9ACD32'
}

绘图时颜色不够丰富,从color.py导入cnames直接使用

# test.py
from matplotlib_sup_ch import cplt as plt
import math
import numpy as np
from color import cnames


if __name__ == '__main__':

    x = list(np.linspace(0, 2*math.pi, 100))  # 从[0, 2π]中取100个数据点
    color_values = list(cnames.values())

    plt.title('cos曲线')
    plt.xlabel('弧度')
    for i in range(0, len(color_values)):
        y = [math.cos(i*e) for e in x]
        plt.plot(x, y, color=color_values[i])
    plt.show()

在这里插入图片描述

3.设置坐标轴刻度间隔及范围
# test.py
from matplotlib_sup_ch import cplt as plt
from matplotlib.pyplot import MultipleLocator
# 设置坐标轴刻度
ax = plt.gca()
# 设置x轴刻度为5
x_major_locator = MultipleLocator(5) 
ax.xaxis.set_major_locator(x_major_locator)

# 设置y轴刻度为0.05
y_major_locator = MultipleLocator(0.05)
ax.yaxis.set_major_locator(y_major_locator)

# 设置坐标轴范围
plt.xlim(-1, 95)  # 设置x轴范围为[-1, 95]
plt.ylim(0, 1)  # 设置y轴范围为[0, 1]
4. 设置显示图例
from matplotlib_sup_ch import cplt as plt
import math
import numpy as np


if __name__ == '__main__':

    x = list(np.linspace(0, 2*math.pi, 100))  # 从[0, 2π]中取100个数据点
    y1 = [math.cos(e) for e in x]
    y2 = [math.sin(e) for e in x]
    plt.plot(x, y1)
    plt.plot(x, y2)
    plt.legend(['cos', 'sin'], loc='best')  # loc参数决定图例的放置位置,更多选择详见 https://blog.csdn.net/lanluyug/article/details/80002273
    plt.show()

在这里插入图片描述

trick: plt.legend()需要放置在plt.plot()之后图例才可以正确显示
5. 图像保存
path = 'img 将要保存的位置'
plt.savefig(path)
plt.close()  # 如果有多张图像保存,可保证图像在绘制时不发生累积现象
6. 绘制子图
import math
import numpy as np
from matplotlib_sup_ch import cplt as plt


if __name__ == '__main__':

    fig = plt.figure(figsize=(16, 9), dpi=100)  # figsize:画布的宽和高,dpi:图像分辨率(dots per inch)

    X = list(np.linspace(0, 2*math.pi, 100))  # 从[0, 2π]中取100个数据点
    y1 = [math.cos(e) for e in X]
    y2 = [math.sin(e) for e in X]

    # scatter
    sub1 = fig.add_subplot(211)

    sub1.set_title('scatter')
    sub1.scatter(X, y1, label='actual')
    sub1.scatter(X, y2, label='predict')

    # 设置X轴,Y轴范围
    sub1.set_xlim(0, 2*math.pi + 1)
    sub1.set_ylim(-1.2, 1.2)

    # 设置X轴,Y轴标签
    sub1.set_xlabel('弧度')
    sub1.set_ylabel('三角函数值')

    sub1.legend(loc='best')  # 设置图例

    # plot
    sub2 = fig.add_subplot(212)

    sub2.set_title('plot')
    sub2.plot(X, y1, label='actual')
    sub2.plot(X, y2, label='predict')

    # 设置X轴,Y轴范围
    sub2.set_xlim(0, 2*math.pi + 1)
    sub2.set_ylim(-1.2, 1.2)

    # 设置X轴,Y轴标签
    sub2.set_xlabel('弧度')
    sub2.set_ylabel('三角函数值')

    sub2.legend(loc='best')  # 设置图例

    fig.show()

在这里插入图片描述

更多子图绘制方法

子图绘制

7. figure 重要参数解析
matplotlib.pyplot.figure
(
num=None, # autoincrement if None, else integer from 1-N
可以理解为figure的标识
例如:fig1 = plt.figure(num=‘fig1’)
figsize=None, # defaults to rc figure.figsize
figure的尺寸,单位英寸,浮点数二维元组(float, float),第一维代表width,第二维代表height
例如:fig = plt.figure(figsize=(16, 9))
dpi=None, # defaults to rc figure.dpi
图像的采样率
fig = plt.figure(dpi=100)
图像像素数=width * height * dpi * dpi
)
更多参数解释,请看下面

matplotlib figure函数学习笔记
matplotlib.pyplot.figure函数使用总结

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matplotlib是一个 Python 的 2D图形绘制库,能够进行出色的绘图,支持各种图表类型。它能够与 NumPy 和 pandas 配合使用,以简化数据处理和绘图的过程。Matplotlib 是一个强大的工具,能够绘制各种类型的图形,如散点图、折线图、条形图、柱状图、饼图、等高线图、3D图形等。 ### 回答2: Matplotlib 是一个图表绘制库,用于在Python中创建高质量的静态、动态和交互式图表。它是一个基于NumPy的库,可以与图形工具包(如Tkinter、wxPython、Qt或GTK)相结合使用,方便地嵌入到各种应用程序中。 Matplotlib 提供了广泛的图表类型,包括线图、散点图、条形图、直方图、饼图等。使用Matplotlib,我们可以自定义图形的各个方面,如标题、标签、颜色、线型、点样式等。此外,Matplotlib 还支持生成三维图形,如曲面图和等高线图。 Matplotlib 的使用十分灵活,具有丰富的功能和可扩展性。通过配合Numpy,我们可以方便地处理和展示科学计算数据。Matplotlib 还能够与其它可视化工具库(如Seaborn)相结合使用,进一步增强图表的美观度和可读性。 除了静态图表,Matplotlib 还支持创建动态图表和交互式图表。动态图表可以通过更新数据或参数来实时显示不断变化的图形。交互式图表允许用户进行缩放、平移和选择等操作,以交互方式探索数据。 总之,Matplotlib 是一个强大、易用且功能丰富的图表绘制库,广泛应用于数据科学、统计学、工程学和其他领域。它提供了丰富的功能和灵活的定制选项,使我们能够轻松地创建出美观、清晰的图表,从而更好地理解和展示数据。 ### 回答3: matplotlib是一个功能强大的数据可视化库,用于绘制图表、图形和其他类型的可视化图像。它为Python提供了一个简单易用的界面,使用户能够根据自己的需求创建各种图形。 matplotlib能够绘制各种类型的图表,如折线图、柱状图、散点图、饼图和直方图等。它还支持在图表中添加注释、标签、标题和图例等元素,以增加图表的可读性和美观度。 除了基本的图表类型之外,matplotlib还支持绘制3D图形、极坐标图和其他定制化的图表。用户可以根据自己的需要选择不同的图表类型,并使用丰富的配置选项对图表进行调整。 matplotlib还提供了一些工具和功能,用于处理和操作数据。例如,用户可以使用matplotlib来计算和绘制数据的统计指标,如平均值、中位数和标准差等。此外,matplotlib还提供了一些数据可视化工具,如数据图表和交互式数据可视化界面。 总之,matplotlib是一个功能强大的数据可视化库,它使用户能够根据自己的需求创建各种类型的图表和图形。无论是进行数据分析、科学研究,还是进行数据可视化展示,matplotlib都是一个非常有用的工具。它不仅易于学习和使用,而且具有丰富的功能和灵活的配置选项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值