欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matplotlib.pyplot.plot 详解

程序员文章站 2022-03-01 21:25:33
...

使用matplotlib画条形图

matplotlib.pyplot.plot(* args,scalex = True,scaley = True,data = None** kwargs )

用线条或者标记绘制y和x的关系

">>>"表示python的交互模式,可以在cmd输入python进入,或者有专门的编辑器.如果你在使用非交互式代码,只需要补成plt.plot,最后使用plt.show()就可以展示

呼叫签名:

plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

[]代表这个参数是可以选填的。

点或线节点的坐标由(x, y)给出。

可选参数fmt是定义基本格式(如颜色、标记和线型)的一种方便的方法。这是一种快捷的字符串表示法,在下面的Notes部分中进行了描述。

>>>plot(x, y)            # 用默认的线条样式和颜色绘制x和y
>>> plot(x, y, 'bo')  # 用蓝色的圆圈标记绘制x和y,也就是散点图
>>> plot(y)           # y坐标就是y自己的值,x的坐标就是对应的array索引[0-N-1]
>>> plot(y, 'r+')     # ditto, but with red plusses

您可以使用Line2D属性作为关键字参数来对外观进行更多的控制。Line属性和fmt可以混合使用。下面两个调用产生相同的结果:

>>> plot(x, y, 'go--', linewidth=2, markersize=12)
>>> plot(x, y, color='green', marker='o', linestyle='dashed',
...      linewidth=2, markersize=12)

Line2D的属性有空再补上吧。

需要注意的是,当与fmt冲突时,Line关键字参数优先。比如fmt设置了标记颜色为黄色,同时color设置了green,那就是绿色。

绘制标签数据

有一种方便的方法来绘制带有标记数据的对象(即可以通过索引obj[‘y’]访问的数据)。不提供x和y中的数据,你可以在数据参数中提供对象,并只提供x和y的标签。

例如:

>>> plot('xlabel', 'ylabel', data=obj)

支持所有可索引的对象。这可以是一个字典,一个pandas.Dataframe或者结构化的numpy数组。

这里可能有人尝试了如果用这样的方式绘图是空白:

z={"doc":1,"cat":2,"apple":3}

plt.plot('doc','cat','apple' data=z)

我尝试了一下,这个地方的意思大概是期望这样的数据

data = {'a': [1,2,3],
        'c': [4,5,6],
        'd': [6,7,8]}

如果用这种方式运行可以正确的看到图像

data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
plt.plot('a', 'c', data=data)

绘制多个数据集

有多种方法可以绘制多个数据集。

  • 最直接的方法就是多次调用plot。例子:

    >>> plot(x1, y1, 'bo')
    >>> plot(x2, y2, 'go')
    
  • 或者,如果您的数据已经是一个2d数组,您可以直接将其传递给x, y。

    例如:一个数组a,其中第一列表示x值,其他列表示y列:

    >>> plot(a[0], a[1:])
    
  • 第三种方法是指定多个集合[x], y, [fmt]组:

    >>> plot(x1, y1, 'g^', x2, y2, 'g-')
    

    在本例中,任何附加的关键字参数都适用于所有数据集。此外,此语法不能与data参数组合。

默认情况下,每一条直线都有一个由“样式循环”指定的不同样式。

比如当一个图有很多条直线的时候,他就会像从循环队列里面取style分配给每条直线。

只有当您希望显式地偏离这些默认值时,才需要fmt和line属性参数。
或者,您也可以使用“‘axes.prop_cycle’ rcParam.”来更改“样式周期”。

参数:

x, y:数组或标量

数据点的水平/垂直坐标。x值是可选的,默认为range(len(y)).也就是y的元素个数

通常,这些参数是一维数组。

它们也可以是标量,或者二维的(在这种情况下,列表示单独的数据集)。

这些参数不能作为关键字传递。

fmt: str,可选

格式字符串,例如
“ro”代表红圈。
有关格式字符串的完整描述,请参阅Notes部分。

格式字符串只是快速设置基本线条属性的缩写。所有这些以及更多的属性关键字参数也可以控制。

此参数不能作为关键字传递。

数据:可索引对象,可选

带有标记数据的对象。
如果给定,则提供标号来绘制x和y。

请注意

从技术上讲,如果第二个标签是有效的fmt,那么在调用中会有一点含糊不清。
plot('n', 'o', data=obj)可以是plt(x, y)或plt(y, fmt)。
在这种情况下,选择前一种写法会发出警告。
您可以通过添加一个空格式字符串plot('n', 'o', '', data=obj)来抑制警告。

返回值:

lines
表示绘制数据的Line2D对象列表。

其他参数

scalex, scaley: bool,可选,默认:True

这些参数确定视图限制是否适用于数据限制。
这些值被传递到autoscale_view。

**kwargs: Line2D属性,可选

kwargs用于指定诸如线标签(用于自动图例)、线宽、抗锯齿、标记面颜色等属性。
例子:

>>> plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)
>>> plot([1,2,3], [1,4,9], 'rs',  label='line 2')

如果您使用一个plot命令创建多行,则kwargs适用于所有这些行。

以下是可用的Line2D属性列表:

Property Description
agg_filter a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array
alpha float,设置用于混合的alpha值-不支持所有后端。
animated bool,设置图画的动画状态
antialiased or aa bool,设置是否使用反锯齿渲染。aa是这个属性的别称。
clip_box Bbox是一个可变的边界框,A 2x2 numpy array of the form [[x0, y0], [x1, y1]]
clip_on bool,设置画面是否使用裁剪。
clip_path [(Path, Transform)
color or c color
contains callable
dash_capstyle {‘butt’, ‘round’, ‘projecting’}
dash_joinstyle {‘miter’, ‘round’, ‘bevel’}
dashes sequence of floats (on/off ink in points) or (None, None)
drawstyle or ds {‘default’, ‘steps’, ‘steps-pre’, ‘steps-mid’, ‘steps-post’}, default: ‘default’
figure Figure
fillstyle {‘full’, ‘left’, ‘right’, ‘bottom’, ‘top’, ‘none’}
gid str
in_layout bool
label object
linestyle or ls {’-’, ‘–’, ‘-.’, ‘:’, ‘’, (offset, on-off-seq), …}
linewidth or lw float
marker marker style
markeredgecolor or mec color
markeredgewidth or mew float
markerfacecolor or mfc color
markerfacecoloralt or mfcalt color
markersize or ms float
markevery None or int or (int, int) or slice or List[int] or float or (float, float)
path_effects AbstractPathEffect
picker float or callable[[Artist, Event], Tuple[bool, dict]]
pickradius float
rasterized bool or None
sketch_params (scale: float, length: float, randomness: float)
snap bool or None
solid_capstyle {‘butt’, ‘round’, ‘projecting’}
solid_joinstyle {‘miter’, ‘round’, ‘bevel’}
transform matplotlib.transforms.Transform
url str
visible bool
xdata 1D array
ydata 1D array
zorder float

Notes

格式字符串

格式字符串由颜色、标记和行组成:

fmt = '[marker][line][color]'

每个选项都是可选的。如果没有提供,则使用样式循环中的值。例外:如果给定线,但没有标记,则数据将是没有标记的线。

也支持其他组合,如 [color][marker][line] ,但注意它们的解析可能是模糊的。

Markers

character description
'.' 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

Line Styles

character description
'-' solid line style
'--' dashed line style
'-.' dash-dot line style
':' dotted line style

格式字符串例子:

'b'    # blue markers with default shape
'or'   # red circles
'-g'   # green solid line
'--'   # dashed line with default color
'^k:'  # black triangle_up markers connected by a dotted line

Colors

The supported color abbreviations are the single letter codes

character color
'b' blue
'g' green
'r' red
'c' cyan
'm' magenta
'y' yellow
'k' black
'w' white

还有“CN”颜色,它会索引到默认的属性循环。

如果颜色是格式字符串的唯一部分,您还可以使用任何matplotlib.colors 规格,例如全名(‘绿色’)或十六进制字符串(’#008000’)。