强基初中数学&学Python——第245课 数字和数学第三方模块Matplotlib之三:Pyplot教程(2)

使用关键字字符串绘图

  在某些情况下,数据源的格式是用字符串关联特定变量的。例如,使用numpy.recarray或pandas.DataFrame。numpy.recarray:
https://numpy.org/doc/stable/reference/generated/numpy.recarray.html#numpy.recarraypandas.DataFrame:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html#pandas.DataFrame

  Matplotlib通过data关键字参数接受上面这种数据对象,这样,就可以使用与这些变量对应的字符串生成绘图。

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

import matplotlib.pyplot as pltimport numpy as npnp.random.seed(19680801)  # seed the random number generator.data = {'a': np.arange(50),        'c': np.random.randint(0, 50, 50),        'd': np.random.randn(50)}data['b'] = data['a'] + 10 * np.random.randn(50)data['d'] = np.abs(data['d']) * 100
plt.scatter('a', 'b', c='c', s='d', data=data)plt.xlabel('entry a')plt.ylabel('entry b')plt.show()

 

用分类变量绘图

  也可以使用分类变量创建绘图。Matplotlib的许多绘图函数接受类别变量。例如:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

import matplotlib.pyplot as pltnames = ['group_a', 'group_b', 'group_c']values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.subplot(131)plt.bar(names, values)plt.subplot(132)plt.scatter(names, values)plt.subplot(133)plt.plot(names, values)plt.suptitle('Categorical Plotting')plt.show()

 

控制线条属性

  线条有许多属性可以设置:线宽、虚线样式、抗锯齿(平滑拟合)等;请参阅matplotlib.line.Line2D。有几种方法可以设置线属性。
matplotlib.line.Line2D:

https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D

  ● 用关键字参数:

· 

plt.plot(x, y, linewidth=2.0)

  ● 使用Line2D实例的setter方法。plot(绘图)函数返回Line2D对象的列表;例如,line1, line2 = plot(x1,y1,x2,y2)。在下面的代码中,假设只有一个图线(line),因此返回的列表长度为1。我们使用(line,)元组解包,以获得该列表的第一个元素:

· 

· 

line, = plt.plot(x, y, '-')line.set_antialiased(False) # 禁用抗锯齿turn off antialiasing

  ● 使用setp函数。下面的示例使用MATLAB风格的函数来设置图线(line)列表上的多个属性。setp可以透明地处理对象列表或单个对象。既可以使用python关键字参数,也可以用MATLAB样式的字符串/值对:setp:

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.setp.html#matplotlib.pyplot.setp

· 

· 

· 

· 

· 

lines = plt.plot(x1, y1, x2, y2)# use keyword argumentsplt.setp(lines, color='r', linewidth=2.0)# or MATLAB style string value pairsplt.setp(lines, 'color', 'r', 'linewidth', 2.0)

  下表是可用的Line2D属性。
Line2D:

https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D

 

  要获取可设置图线(line)属性的列表,请使用一图线对象(line)或多图线列表(lines)作为参数调用setp函数。

· 

· 

· 

· 

· 

· 

· 

· 

· 

>>> lines = plt.plot([1, 2, 3])>>> plt.setp(lines)  agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array and two offsets from the bottom left corner of the image  alpha: scalar or None  animated: bool  antialiased or aa: bool  clip_box: `.Bbox`  clip_on: bool  ......