Python 绘制数据图表

  • matplotlib绘图库模块安装
pip install matplotlib

  • 导入pyplot子模块
import matplotlib.pyplot as plt
  • 官网:http://matplotlib.org
  • 官方文档:https://matplotlib.org/stable/index.html

1. 绘制折线图

1.1 绘制简单的折线图

import matplotlib
import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
matplotlib.rc("font", family='Microsoft YaHei')# 1.准备数据
squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 2.画线plot()
# linewidth设置线条宽度
plt.plot(squares, linewidth=2)  # 列表内的数据被视为y轴的值,x轴的值会根据列表值的索引位置自动产生# 3.设置x、y轴的最小刻度和最大刻度
plt.axis([0, 10, 0, 100])  # 将x轴设为0~10,将y轴设为0~100# 4.设置标题及字体大小
"""
title():图表标题,title(标题名称,fontsize=字体大小)
xlabel():x轴标题
ylabel():y轴标题
"""
plt.title(label='0~10的平方', fontsize=18)
plt.xlabel(xlabel='值', fontsize=15)
plt.ylabel(ylabel='平方值', fontsize=15)# 5.设置坐标轴刻度
"""
使用tick_params()方法设置:- 应用范围(axis):x-->应用到x轴,y-->应用到y轴,both-->应用到x轴和y轴- 坐标轴的刻度大小(labelsize)- 线条颜色(color)
如:tick_params(axis='x', labelsize=10, color='green')
"""
plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
plt.show()

效果:

1.2 修改图表的初始值

import matplotlib
import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
matplotlib.rc("font", family='Microsoft YaHei')# 1.准备数据
squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 索引列表
seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 2.画线plot()
# linewidth设置线条宽度
plt.plot(seq, squares, linewidth=2.5)# 设置标题及字体大小
plt.title(label='1~10的平方', fontsize=18)
plt.xlabel(xlabel='值', fontsize=15)
plt.ylabel(ylabel='平方值', fontsize=15)# 5.设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
plt.show()

效果:

1.3 多组数据的应用

# author:mlnt
# createdate:2022/8/17import matplotlib
import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
matplotlib.rc("font", family='Microsoft YaHei')# 1.准备数据
data1 = [1, 4, 9, 16, 25, 36, 49, 64, 81]
data2 = [1, 3, 5, 8, 13, 21, 34, 55, 89]# 索引列表
seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]# 2.画线plot()
# linewidth设置线条宽度
plt.plot(seq, data1, seq, data2, linewidth=2.5)# 设置标题及字体大小
plt.title(label='Test Chart', fontsize=18)
plt.xlabel(xlabel='x-value', fontsize=14)
plt.ylabel(ylabel='y-value', fontsize=14)# 5.设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
plt.show()

效果:

1.4 设置线条颜色及样式

  • 设置颜色,可在plot()中添加参数:

    • ‘b’: blue
    • ‘c’: cyan
    • ‘g’: green
    • ‘k’: black
    • ‘m’: magenta
    • ‘r’: red
    • ‘w’: white
    • ‘y’: yellow
  • 设置线条样式:

    • '-‘或’solid’: 预设实线
    • '–‘或’dashed’: 虚线
    • '-.‘或’dashdot’: 虚点线
    • ':‘或’dotted’:点线
    • ‘.’:点标记
    • ‘,’:像素标记
    • ‘o’: 圆标记
    • ‘v’: 反三角标记
    • ‘^’: 三角标记
    • ‘s’:方形标记
    • ‘p’:五角标记
    • ‘*’: 星号标记
    • ‘+’:加号标记
    • ‘-’:减号标记
    import matplotlib.pyplot as plt# 1.准备数据
    data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]            # data1线条
    data2 = [1, 4, 9, 16, 25, 36, 49, 64, 81]      # data2线条
    data3 = [1, 3, 5, 8, 13, 21, 34, 55, 89]       # data3线条
    data4 = [1, 6, 12, 20, 30, 41, 56, 72, 90]     # data4线条# 索引列表
    seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]plt.plot(seq, data1, 'g--', seq, data2, 'r-.', seq, data3, 'b:', seq, data4, 'mp')# 设置标题及字体大小
    plt.title(label='Test Chart', fontsize=18)
    plt.xlabel(xlabel='x-value', fontsize=14)
    plt.ylabel(ylabel='y-value', fontsize=14)# 设置坐标轴刻度
    plt.tick_params(axis='both', labelsize=12, color='red')plt.show()
    

效果:

1.5 刻度设置

import matplotlib
import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
matplotlib.rc("font", family='Microsoft YaHei')
# 1.准备数据
gold_medal = [15, 5, 16, 16, 28, 32, 51, 38, 26, 38]
silver_medal = [8, 11, 22, 22, 16, 17, 21, 27, 18, 32]
bronze_medal = [9, 12, 16, 12, 15, 14, 28, 23, 26, 18]# 索引列表
year = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]"""
设置刻度:
- xticks():设置x轴刻度
- yticks():设置y轴刻度
"""
# 设置x轴刻度
plt.xticks(year)# 设置线条样式
plt.plot(year, gold_medal, '-*', year, silver_medal, '-o', year, bronze_medal, '-^')# 设置标题及字体大小
plt.title('中国历届奥运会奖牌情况', fontsize=20)
plt.xlabel('年份', fontsize=14)
plt.ylabel('数量/枚', fontsize=14)
# 设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red')
# 显示图表
plt.show()

效果:

1.6 图例legend()

参数loc可以设置图例的位置:

  • ‘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
  • 将图例放在图表内
import matplotlib
import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
matplotlib.rc("font", family='Microsoft YaHei')
# 1.准备数据
gold_medal = [15, 5, 16, 16, 28, 32, 51, 38, 26, 38]
silver_medal = [8, 11, 22, 22, 16, 17, 21, 27, 18, 32]
bronze_medal = [9, 12, 16, 12, 15, 14, 28, 23, 26, 18]# 索引列表
year = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]"""
设置刻度:
- xticks():设置x轴刻度
- yticks():设置y轴刻度
"""
# 设置x轴刻度
plt.xticks(year)# 设置线条样式
line_gold, = plt.plot(year, gold_medal, '-*', label='gold_medal')
line_silver, = plt.plot(year, silver_medal, '-o', label='silver_medal')
line_bronze, = plt.plot(year, bronze_medal, '-^', label='bronze_medal')# 设置图例
"""
参数loc可以设置图例的位置'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.legend(handles=[line_gold, line_silver, line_bronze], loc='best')
# 放在图表内的右上角
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc=1)
# 放在图表内的左上角
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc='upper left')
# 放在图表内的左下角
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc=3)
# 放在图表内的右下角
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc=4)# 放在图表内的左侧中央
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc='center left')
# 放在图表内的右侧中央
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc='center right')
# 放在图表内的底部正中
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc='lower center')
# 放在图表内的顶部正中
# plt.legend(handles=[line_gold, line_silver, line_bronze], loc='upper center')# 设置标题及字体大小
plt.title('中国历届奥运会奖牌情况', fontsize=20)
plt.xlabel('年份', fontsize=14)
plt.ylabel('数量/枚', fontsize=14)
# 设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red')
# 显示图表
plt.show()

效果:

  • 将图例放在图表外,使用savefig()方法保存图片文件

    # author:mlnt
    # createdate:2022/8/17
    import matplotlib
    import matplotlib.pyplot as plt# 设置字体为微软雅黑,解决中文显示问题
    matplotlib.rc("font", family='Microsoft YaHei')
    # 1.准备数据
    gold_medal = [15, 5, 16, 16, 28, 32, 51, 38, 26, 38]
    silver_medal = [8, 11, 22, 22, 16, 17, 21, 27, 18, 32]
    bronze_medal = [9, 12, 16, 12, 15, 14, 28, 23, 26, 18]# 索引列表
    year = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]"""
    设置刻度:
    - xticks():设置x轴刻度
    - yticks():设置y轴刻度
    """
    # 设置x轴刻度
    plt.xticks(year)# 设置线条样式
    line_gold, = plt.plot(year, gold_medal, '-*', label='gold_medal')
    line_silver, = plt.plot(year, silver_medal, '-o', label='silver_medal')
    line_bronze, = plt.plot(year, bronze_medal, '-^', label='bronze_medal')# 设置图例
    # bbox_to_anchor()设置锚点,即图例位置
    # 在图表内,左下角位置为(0,0),右上角位置为(1,1)
    plt.legend(handles=[line_gold, line_silver, line_bronze], loc='best', bbox_to_anchor=(1, 1))# 设置在图表与Figure 1之间留白
    # h_pad/w_pad分别设置高度/宽度的留白
    plt.tight_layout(pad=2)# 设置标题及字体大小
    plt.title('中国历届奥运会奖牌情况', fontsize=20)
    plt.xlabel('年份', fontsize=14)
    plt.ylabel('数量/枚', fontsize=14)
    # 设置坐标轴刻度
    plt.tick_params(axis='both', labelsize=12, color='red')# 保存图片文件,使用savefig()方法保存图片文件,需放在show()的前面,表示先存储再显示图表
    plt.savefig('medal_chart.jpg', bbox_inches='tight')  # bbox_inches='tight'将图表的多余空间删除# 显示图表
    plt.show()
    

    效果:

2. 绘制散点图

2.1 基本散点图的绘制

  • 绘制一个点
"""
scatter(x, y, s, c)
s: 绘图点的大小
c:颜色
"""
import matplotlib.pyplot as plt# 在坐标轴(5,5)绘制一个点
plt.scatter(5, 5)
plt.show()

效果:

  • 绘制系列点

    # author:mlnt
    # createdate:2022/8/17
    """
    scatter(x, y, s, c)
    s: 绘图点的大小
    c:颜色
    """
    import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签
    plt.rcParams['axes.unicode_minus'] = Falsemedal = [32, 28, 54, 50, 59, 63, 100, 88, 70, 88]
    # 索引列表
    year = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]# 设置x轴刻度
    plt.xticks(year)plt.scatter(x=year, y=medal, s=20, c='green')# 设置标题及字体大小
    plt.title('中国历届奥运会奖牌情况', fontsize=20)
    plt.xlabel('年份', fontsize=14)
    plt.ylabel('数量/枚', fontsize=14)
    # 设置坐标轴刻度
    plt.tick_params(axis='both', labelsize=12, color='red')
    plt.show()
    

    效果:

2.2 设置绘制区间

**axis()**设置绘图区间:

  • axis([xmin, xmax, ymin, ymax])

    • xmin/xmax:x轴的最小/最大区间
    • ymin/ymxa:y轴的最小/最大区间
# author:mlnt
# createdate:2022/8/17
"""
axis()设置绘图区间:
axis([xmin, xmax, ymin, ymax])
xmin/xmax:x轴的最小/最大区间
ymin/ymxa:y轴的最小/最大区间
"""import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsex = [i for i in range(1, 101)]
y = [i**2 for i in x]# 设置绘图区间
plt.axis([0, 100, 0, 10000])
plt.scatter(x=x, y=y, s=20, c='green')# 设置标题及字体大小
plt.title('1-100的平方', fontsize=20)
plt.xlabel('数值', fontsize=14)
plt.ylabel('平方值', fontsize=14)
# 设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red')
plt.show()

效果:

2.3 绘制波形

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(0, 10, 500)
# 绘制sin()和cos()的波形变化
y1 = np.sin(x)
y2 = np.cos(x)
plt.scatter(x, y1, color=(0.5, 0.8, 0.6))
plt.scatter(x, y2)
plt.show()

效果:

2.4 创建不等宽的散点图

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(0, 5, 500)
y = 1 - 0.5*np.abs(x-2)
lwidths = (1+x)**2
plt.scatter(x=x, y=y, s=lwidths, color=(0.6, 0.8, 0.9))
plt.show()

效果:

2.5 色彩映射

import matplotlib.pyplot as plt
import numpy as npx = np.arange(100)
plt.scatter(x=x, y=x, c=x, cmap='rainbow')
plt.show()

效果:

2.6 利用随机数绘制散点图

import matplotlib.pyplot as plt
import numpy as npwhile True:x = np.random.random(100)y = np.random.random(100)t = xplt.scatter(x, y, s=100, c=t, cmap='brg')plt.show()is_exit = input('是否继续?(y/n)')if is_exit.upper() == 'N':break

2.7 利用随机数实现位置的移动

# author:mlnt
# createdate:2022/8/17
import randomimport matplotlib.pyplot as pltdef loc(index):"""处理坐标的移动"""x_mov = random.choice([-3, 3])xloc = x[index - 1] + x_movy_mov = random.choice([-5, -1, 1, 5])yloc = y[index - 1] + y_movx.append(xloc)y.append(yloc)num = 8000
x = [0]
y = [0]while True:for i in range(1, num):loc(i)t = xplt.scatter(x, y, s=2, c=t, cmap='brg')# plt.axes().get_xaxis().set_visible(False)  # 隐藏y坐标# plt.axes().get_yaxis().set_visible(False)  # 隐藏y坐标# 隐藏坐标轴。plt.axis('off')plt.savefig('image.png', bbox_inches='tight', pad_inches=0)plt.show()is_exit = input('是否继续?(y/n)')if is_exit.upper() == 'N':breakelse:x[0] = x[num - 1]y[0] = y[num - 1]del x[1:]del y[1:]

3. 绘制多个图表

3.1 一个程序绘制多个图表

# author:mlnt
# createdate:2022/8/17
import matplotlib.pyplot as plt# 1.准备数据
data1 = [1, 4, 9, 16, 25, 36, 49, 64, 81]
data2 = [1, 3, 5, 8, 13, 21, 34, 55, 89]# 索引列表
seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]# 创建图表1
plt.figure(1)
# 画线plot()
plt.plot(seq, data1, '-*')# 创建图表2
plt.figure(2)
plt.plot(seq, data2, '-o')
# 设置标题及字体大小
plt.title(label='Test Chart 2', fontsize=18)
plt.xlabel(xlabel='x-value', fontsize=14)
plt.ylabel(ylabel='y-value', fontsize=14)# 5.设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
plt.show()

效果:

3.2 含有子表的图表

subplot(x1, x2, x3)

  • x1: 上下(垂直)方向绘制图表数
  • x2:左右(水平)方向绘制图表数
  • x3:表示这是第几张
  • 一个Figure内绘制上下子图

    # author:mlnt
    # createdate:2022/8/17
    """
    subplot(x1, x2, x3)
    x1: 上下(垂直)方向绘制图表数
    x2:左右(水平)方向绘制图表数
    x3:表示这是第几张
    """
    import matplotlib.pyplot as plt# 1.准备数据
    data1 = [1, 4, 9, 16, 25, 36, 49, 64, 81]
    data2 = [1, 3, 5, 8, 13, 21, 34, 55, 89]# 索引列表
    seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]# 在一个Figure内绘制上下子图
    plt.subplot(2, 1, 1)
    # 画线plot()
    plt.plot(seq, data1, '-*')plt.subplot(2, 1, 2)
    plt.plot(seq, data2, '-o')
    # 设置标题及字体大小
    plt.xlabel(xlabel='x-value', fontsize=14)
    plt.ylabel(ylabel='y-value', fontsize=14)# 设置坐标轴刻度
    plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
    plt.show()
    

    效果:

  • 一个Figure内绘制左右子图

    # author:mlnt
    # createdate:2022/8/17
    """
    subplot(x1, x2, x3)
    x1: 上下(垂直)方向绘制图表数
    x2:左右(水平)方向绘制图表数
    x3:表示这是第几张
    """
    import matplotlib.pyplot as plt# 1.准备数据
    data1 = [1, 4, 9, 16, 25, 36, 49, 64, 81]
    data2 = [1, 3, 5, 8, 13, 21, 34, 55, 89]# 索引列表
    seq = [1, 2, 3, 4, 5, 6, 7, 8, 9]# 在一个Figure内绘制上下子图
    plt.subplot(2, 1, 1)
    # 画线plot()
    plt.plot(seq, data1, '-*')plt.subplot(2, 1, 2)
    plt.plot(seq, data2, '-o')
    # 设置标题及字体大小
    plt.xlabel(xlabel='x-value', fontsize=14)
    plt.ylabel(ylabel='y-value', fontsize=14)# 设置坐标轴刻度
    plt.tick_params(axis='both', labelsize=12, color='red', labelcolor='green')# 显示绘制的图形
    plt.show()
    

    效果:

4. 绘制直方图

# author:mlnt
# createdate:2022/8/17
"""
bar(x, height, width)
x: 序列,x轴位置
height:序列数值大小
width:直方图的宽度
"""
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签
plt.rcParams['axes.unicode_minus'] = Falsemedal = [32, 28, 54, 50, 59, 63, 100, 88, 70, 88]
x = np.arange(len(medal))
# 索引列表
year = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]plt.bar(x, medal, width=0.5)# 设置标题及字体大小
plt.title('中国历届奥运会奖牌情况', fontsize=20)
plt.xlabel('年份', fontsize=14)
plt.ylabel('数量/枚', fontsize=14)
plt.xticks(x, year)
# 设置坐标轴刻度
plt.tick_params(axis='both', labelsize=12, color='red')
plt.show()

效果:

# author:mlnt
# createdate:2022/8/17
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 1.准备数据
labels = [1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2021]
gold_medal = [15, 5, 16, 16, 28, 32, 51, 38, 26, 38]
silver_medal = [8, 11, 22, 22, 16, 17, 21, 27, 18, 32]
bronze_medal = [9, 12, 16, 12, 15, 14, 28, 23, 26, 18]x = np.arange(len(labels))  # x轴位置
width = 0.3  # 直方图的宽度fig, ax = plt.subplots()
rects1 = ax.bar(x - width, gold_medal, width, label='gold_medal')
rects2 = ax.bar(x, silver_medal, width, label='silver_medal')
rects3 = ax.bar(x + width, bronze_medal, width, label='bronze_medal')# 设置标题及字体大小
ax.set_xlabel('年份', fontsize=14)
ax.set_ylabel('数量/枚', fontsize=14)
ax.set_title('中国历届奥运会奖牌情况', fontsize=20)
ax.set_xticks(x, labels)
# 设置图例
ax.legend()ax.bar_label(rects1, padding=3)
ax.bar_label(rects2, padding=3)
ax.bar_label(rects3, padding=3)fig.tight_layout()plt.show()

效果:

5. 使用CSV文件绘制图表

# author:mlnt
# createdate:2022/8/17
import csvimport matplotlib
import matplotlib.pyplot as pltmatplotlib.rc("font", family='Microsoft YaHei')filename = 'score.csv'with open(file=filename) as csvFile:    # 打开csv文件csvReader = csv.reader(csvFile)    # 创建reader对象headerRow = next(csvReader)   # 读取文件下一行print(headerRow)  # ['学号', '姓名', '语文', '数学', '英语', '物理', '化学', '生物']# 设置空列表names, Chinese, Math, English, Physics, Chemistry, Biology = [], [], [], [], [], [], []for row in csvReader:# 将数据添加到列表names.append(row[1])Chinese.append(int(row[2]))Math.append(int(row[3]))English.append(int(row[4]))Physics.append(int(row[5]))Chemistry.append(int(row[6]))Biology.append(int(row[7]))print(f'语文:{Chinese}')print(f'数学:{Math}')print(f'英语:{English}')print(f'物理:{Physics}')print(f'化学:{Chemistry}')print(f'生物:{Biology}')# 绘制语文成绩
# 设置绘图区大小
fig = plt.figure(dpi=80, figsize=(12, 8))
# 设置线条样式
line_Chinese, = plt.plot(names, Chinese, '-*', label='Chinese')
line_Math, = plt.plot(names, Math, '-o', label='Math')
line_English, = plt.plot(names, English, '-p', label='English')
line_Physics, = plt.plot(names, Physics, '-s', label='Physics')
line_Chemistry, = plt.plot(names, Chemistry, '-v', label='Chemistry')
line_Biology, = plt.plot(names, Biology, '-^', label='Biology')
# 设置图例
plt.legend(handles=[line_Chinese, line_Math, line_English, line_Physics, line_Chemistry, line_Biology], loc='best')
# 旋转
fig.autofmt_xdate(rotation=60)
plt.title('成绩分析', fontsize=20)
plt.xlabel('学员', fontsize=14)
plt.ylabel('分数', fontsize=14)
plt.tick_params(axis='both', labelsize=12, color='red')
plt.show()

score.csv:

效果:

# author:mlnt
# createdate:2022/8/17
import csv
from datetime import datetimeimport matplotlib
import matplotlib.pyplot as pltmatplotlib.rc("font", family='Microsoft YaHei')filename = 'temperature.csv'with open(file=filename) as csvFile:    # 打开csv文件csvReader = csv.reader(csvFile)    # 创建reader对象headerRow = next(csvReader)   # 读取文件下一行# print(headerRow)# 设置空列表dates, lowTemps, highTemps, averageTemps = [], [], [], []for row in csvReader:try:# 将日期字符串转成对象currentDate = datetime.strptime(row[0], '%Y/%m/%d')# 设置最低温度# 需要转换成数字类型,y轴才能进行排序lowTemp = float(row[1])# 设置最高温度highTemp = float(row[2])# 设置平均温度averageTemp = float(row[3])except Exception as e:print('有缺值', e)else:# 将数据添加到列表dates.append(currentDate)lowTemps.append(lowTemp)highTemps.append(highTemp)averageTemps.append(averageTemp)print(f'最低温度:{lowTemps}')print(f'最高温度:{highTemps}')print(f'平均温度:{averageTemps}')# # 设置绘图区大小
fig = plt.figure(dpi=80, figsize=(12, 8))
# 设置线条样式
line_highTemps, = plt.plot(dates, highTemps, '-*', label='highTemps')
line_lowTemps, = plt.plot(dates, lowTemps, '-o', label='lowTemps')
line_averageTemps, = plt.plot(dates, averageTemps, '-p', label='averageTemps')
# 设置图例
plt.legend(handles=[line_lowTemps, line_averageTemps, line_highTemps], loc='best')
# 旋转
fig.autofmt_xdate(rotation=60)
plt.title('Weather Report', fontsize=20)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Temperature (C)', fontsize=14)
plt.tick_params(axis='both', labelsize=12, color='red')
plt.show()

temperature.csv:

效果:


参考:

  • 官网:http://matplotlib.org
  • 官方文档:https://matplotlib.org/stable/index.html
  • 色彩映射:http://matplotlib.org/examples/color/colormaps_reference.html
  • https://blog.csdn.net/weixin_46233323/article/details/108038706
  • https://blog.csdn.net/weixin_43838785/article/details/104515455
  • https://blog.csdn.net/weixin_41783077/article/details/110734759
  • https://www.pudn.com/news/62623526dfdd9a1c0c529522.html
  • https://www.yzlfxy.com/jiaocheng/python/430158.html
  • https://www.zhihu.com/question/506015285

Python 绘制数据图表相关推荐

  1. 用Python绘制棒棒糖图表,真的好看!

    作者 | 小F       责编 | 欧阳姝黎 条形图在数据可视化里,是一个经常被使用到的图表. 虽然很好用,也还是存在着缺陷呢.比如条形图条目太多时,会显得臃肿,不够直观. 棒棒糖图表则是对条形图的 ...

  2. python画曲线图-利用python绘制数据曲线图的实现

    "在举国上下万众一心.众志成城做好新冠肺炎疫情防控工作的特殊时刻,我们不能亲临主战场,但我们能坚持在大战中坚定信心.不负韶华." 1.爬取新闻保存为json文件,并将绘图所需数据保 ...

  3. 用Python绘制棒棒糖图表

    条形图在数据可视化里,是一个经常被使用到的图表. 虽然很好用,也还是存在着缺陷.比如条形图条目太多时,会显得臃肿,不够直观. 棒棒糖图表则是对条形图的改进,以一种小清新的设计,清晰明了表达了我们的数据 ...

  4. [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化

    本文主要介绍GeoPandas结合matplotlib实现地图的基础可视化.GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口.GeoPandas扩展了Pandas ...

  5. 【Python】利用Python绘制3D图表

    代码 ''' Author: CloudSir Date: 2021-07-28 10:57:47 LastEditTime: 2021-08-04 17:33:07 LastEditors: Clo ...

  6. [转载] python画柱状图-Python绘制精美图表之双柱形图

    参考链接: Python | 使用XlsxWriter模块在Excel工作表中绘制条形图 图表是比干巴巴的表格更直观的表达,简洁.有力.工作中经常遇到的场景是,有一些数值需要定时的监控,比如服务器的连 ...

  7. python绘制3D图表

    pyecharts绘制3D图表 参数配置和说明 Grid3DOpts.Axis3DOpts为3D图标需要配置项 Grid3DOpts:三位坐标系配置项 class pyecharts.options. ...

  8. 绘制数据图表的又一利器:C3.js

    目前市面上我们可选择的图表工具琳琅满目,有开源的也有商业化的,而且C3也不是第一个基于D3开发的库,像nvd3.js和rickshaw.js都是基于D3开发的,并且都声称可以利用D3的强大功能来创建可 ...

  9. 使用python画图表_利用Python绘制数据的瀑布图的教程

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

最新文章

  1. 用于ONNX的TensorRT后端
  2. JSP显示页面和数据库乱码
  3. 【剑指offer-Java版】41和为s的两个数字VS和为s的连续正数序列
  4. java query类是什么类_java – 从包生成QueryDsl Q类
  5. 前端学习(3110):react-hello-函数式组件
  6. 设计模式学习笔记——备忘录(Memento)模式
  7. python与材料计算快速入门线上训练营_Python18天训练营第二课基础1
  8. mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】...
  9. php opcode缓存
  10. php留言系统源码,XYCMS php留言板 v8.0
  11. 【python】Python学到什么程度可以面试工作
  12. 第9章第18节:制作商业计划书的商业模式幻灯片 [PowerPoint精美幻灯片实战教程]
  13. SVN修改提交用户名
  14. pmon 源码分析之start.S
  15. MySQL 使用 Workbench 建表时 PK NN UQ BIN UN ZF AI G 的含义
  16. 一行代码卖出570美元, 天价代码的内幕
  17. 证明:不同特征值对应的特征向量线性无关
  18. Springboot毕设项目股票交易模拟系统76wrijava+VUE+Mybatis+Maven+Mysql+sprnig)
  19. Android 7.0新特性——长按出现快捷方式
  20. CODA数据集 -- 出租车存MySQL源码

热门文章

  1. 我是如何在自学编程9个月后找到工作的 1
  2. PowerBuilder打印QRCode
  3. 零钱通项目 - 韩老师
  4. SNP位点上下游序列查找1.0 2020-9-27
  5. 可视化系列讲解:css3D:如何绘制正方体,长方体等
  6. 数据挖掘流程总结及案例分析
  7. 华为mate50pro和小米12ultea对比
  8. 关于css--的封装、继承、多态
  9. 批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)
  10. 我欢喜,为着时光所有的馈赠