matplotlib画简单的折线图

用matplotlib画一个简单的折线图
今天要画一个折线图,然后在大佬的推荐下用了matplotlib,用这篇博客来记录一下遇到的题和解决方法,并贴上最后的代码。

  1. 问题

中文乱码:

plt.rcParams['font.sans-serif']=['SimHei']   # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False    # 用来正常显示负号

title = u'标题'    # .encode('utf-8')

注意:中文字符串前面一定要加u!!!如上面的title

  1. 开始画图

1.1标题、x轴、y轴

title = u'标题'    # .encode('utf-8')
plt.title(title, fontsize=24)
plt.xlabel(u"x轴", fontsize=14)
plt.ylabel(u"y轴", fontsize=14)

fontsize是字体大小,可根据要求调整
点一下run,大概是这样子:
matplotlib画简单的折线图_第1张图片

1.2散点
将所有点的x坐标放入一个list中,将所有点的y坐标放入一个list中,如下:

x = [5, 10, 15, 20, 25, 30]
y1 = [5.5, 9.8, 6.6, 6.7, 3.5, 9.9]

plt.plot(x, y1)   # 绘制

点一下run,效果如下:
matplotlib画简单的折线图_第2张图片

若要在同一张图中画两个散点折现图,可以再设置一个y2,代码修改如下:

x = [5, 10, 15, 20, 25, 30]
y1 = [5.5, 9.8, 6.6, 6.7, 3.5, 9.9]
y2 = [9.9, 3.5, 6.7, 6.6, 9.8, 5.5]
plt.plot(x, y1)   # 绘制
plt.plot(x, y2)

run一下:
matplotlib画简单的折线图_第3张图片

在添加个小标签区别一下,在plt.plot的参数中再添加一个label参数,添加完以后一定要调用plt.lengend()

plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.legend()

run一下,左下角就有小标签了
matplotlib画简单的折线图_第4张图片

Em…..如果想换线形…..
这里把两条线都变成黑色的,然后用线的样式来区分是那个函数
A.换颜色
在plot方法中用color来换颜色
plot方法的关键字参数color(或c)用来设置线的颜色。可取值为:
①颜色名称或简写
b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white
②#rrggbb
③(r, g, b) 或 (r, g, b, a),其中 r g b a 取均为[0, 1]之间
④[0, 1]之间的浮点数的字符串形式,表示灰度值。0表示黑色,1表示白色

这里把两条线都换成黑色的

B.换样式
plot方法的关键字参数linestyle(或ls)用来设置线的样式。可取值为:
-, solid
–, dashed
-., dashdot
:, dotted
”, ’ ‘, None

换颜色+换线形的代码:

plt.plot(x, y1, label="y1", color='k', ls='solid')
plt.plot(x, y2, label="y2", color='k', ls='dashdot')

run一下:
matplotlib画简单的折线图_第5张图片

如果还想在线上加标记(maker)的话,plot关键字参数提供了marker, 与之相关的mec(makeregedgecolor)、mfc(makerfacecolor)和ms(markersize,marker的大小)。在y2上做实验,看代码看图:
常用marker:
‘.’: point marker
‘,’: pixel marker
‘o’: circle marker
‘v’: triangle_down marker
‘^’: triangle_up marker
‘<’: triangle_left marker
‘>’: triangle_right marker
‘1’: tri_down marker
‘2’: tri_up marker
‘3’: tri_left marker
‘4’: tri_right marker
‘s’: square marker
‘p’: pentagon marker
‘*’: star marker
‘h’: hexagon1 marker
‘H’: hexagon2 marker
‘+’: plus marker
‘x’: x marker
‘D’: diamond marker
‘d’: thin_diamond marker
‘|’: vline marker
‘_’: hline marker

代码:

plt.plot(x, y2, label="y2", color='k', ls='dashdot', marker='v', mec='b', mfc='r')

mec marker的边缘色,mfc marker的填充色

图:
matplotlib画简单的折线图_第6张图片
好了,最后是整个散点图的代码

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']   # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号

title = u'标题'    # .encode('utf-8')
plt.title(title, fontsize=24)
plt.xlabel(u"x轴", fontsize=14)
plt.ylabel(u"y轴", fontsize=14)

x = [5, 10, 15, 20, 25, 30]
y1 = [5.5, 9.8, 6.6, 6.7, 3.5, 9.9]
y2 = [9.9, 3.5, 6.7, 6.6, 9.8, 5.5]
plt.plot(x, y1, label="y1", color='k', ls='solid')
plt.plot(x, y2, label="y2", color='k', ls='dashdot', marker='v', mec='b', mfc='r')
plt.legend()
plt.show()

1.3连续的函数
这里要用到numpy库,用numpy.linspace来进行间隔采样

修改代码:

x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

图:
matplotlib画简单的折线图_第7张图片
全部代码:

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']   # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号

title = u'标题'    # .encode('utf-8')
plt.title(title, fontsize=24)
plt.xlabel(u"x轴", fontsize=14)
plt.ylabel(u"y轴", fontsize=14)

x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label="y1", color='k', ls='solid')
plt.plot(x, y2, label="y2", color='k', ls='dashdot', marker='v', mec='b', mfc='r')
# mec marker的边缘色,mfc marker的填充色
plt.legend()

plt.show()

你可能感兴趣的:(boring)