mirror of
https://github.com/Estom/notes.git
synced 2026-05-11 11:06:25 +08:00
matplotlib & pandas
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# matplotlib艺术家对象的参考
|
||||
|
||||
此示例显示使用matplotlib API绘制的几个matplotlib的图形基元(艺术家)。[艺术家对象API](https://matplotlib.org/api/artist_api.html#artist-api)提供完整的艺术家列表和文档。
|
||||
|
||||
Copyright (c) 2010, Bartosz Telenczuk BSD License
|
||||
|
||||
```python
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import matplotlib.path as mpath
|
||||
import matplotlib.lines as mlines
|
||||
import matplotlib.patches as mpatches
|
||||
from matplotlib.collections import PatchCollection
|
||||
|
||||
|
||||
def label(xy, text):
|
||||
y = xy[1] - 0.15 # shift y-value for label so that it's below the artist
|
||||
plt.text(xy[0], y, text, ha="center", family='sans-serif', size=14)
|
||||
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
# create 3x3 grid to plot the artists
|
||||
grid = np.mgrid[0.2:0.8:3j, 0.2:0.8:3j].reshape(2, -1).T
|
||||
|
||||
patches = []
|
||||
|
||||
# add a circle
|
||||
circle = mpatches.Circle(grid[0], 0.1, ec="none")
|
||||
patches.append(circle)
|
||||
label(grid[0], "Circle")
|
||||
|
||||
# add a rectangle
|
||||
rect = mpatches.Rectangle(grid[1] - [0.025, 0.05], 0.05, 0.1, ec="none")
|
||||
patches.append(rect)
|
||||
label(grid[1], "Rectangle")
|
||||
|
||||
# add a wedge
|
||||
wedge = mpatches.Wedge(grid[2], 0.1, 30, 270, ec="none")
|
||||
patches.append(wedge)
|
||||
label(grid[2], "Wedge")
|
||||
|
||||
# add a Polygon
|
||||
polygon = mpatches.RegularPolygon(grid[3], 5, 0.1)
|
||||
patches.append(polygon)
|
||||
label(grid[3], "Polygon")
|
||||
|
||||
# add an ellipse
|
||||
ellipse = mpatches.Ellipse(grid[4], 0.2, 0.1)
|
||||
patches.append(ellipse)
|
||||
label(grid[4], "Ellipse")
|
||||
|
||||
# add an arrow
|
||||
arrow = mpatches.Arrow(grid[5, 0] - 0.05, grid[5, 1] - 0.05, 0.1, 0.1,
|
||||
width=0.1)
|
||||
patches.append(arrow)
|
||||
label(grid[5], "Arrow")
|
||||
|
||||
# add a path patch
|
||||
Path = mpath.Path
|
||||
path_data = [
|
||||
(Path.MOVETO, [0.018, -0.11]),
|
||||
(Path.CURVE4, [-0.031, -0.051]),
|
||||
(Path.CURVE4, [-0.115, 0.073]),
|
||||
(Path.CURVE4, [-0.03, 0.073]),
|
||||
(Path.LINETO, [-0.011, 0.039]),
|
||||
(Path.CURVE4, [0.043, 0.121]),
|
||||
(Path.CURVE4, [0.075, -0.005]),
|
||||
(Path.CURVE4, [0.035, -0.027]),
|
||||
(Path.CLOSEPOLY, [0.018, -0.11])]
|
||||
codes, verts = zip(*path_data)
|
||||
path = mpath.Path(verts + grid[6], codes)
|
||||
patch = mpatches.PathPatch(path)
|
||||
patches.append(patch)
|
||||
label(grid[6], "PathPatch")
|
||||
|
||||
# add a fancy box
|
||||
fancybox = mpatches.FancyBboxPatch(
|
||||
grid[7] - [0.025, 0.05], 0.05, 0.1,
|
||||
boxstyle=mpatches.BoxStyle("Round", pad=0.02))
|
||||
patches.append(fancybox)
|
||||
label(grid[7], "FancyBboxPatch")
|
||||
|
||||
# add a line
|
||||
x, y = np.array([[-0.06, 0.0, 0.1], [0.05, -0.05, 0.05]])
|
||||
line = mlines.Line2D(x + grid[8, 0], y + grid[8, 1], lw=5., alpha=0.3)
|
||||
label(grid[8], "Line2D")
|
||||
|
||||
colors = np.linspace(0, 1, len(patches))
|
||||
collection = PatchCollection(patches, cmap=plt.cm.hsv, alpha=0.3)
|
||||
collection.set_array(np.array(colors))
|
||||
ax.add_collection(collection)
|
||||
ax.add_line(line)
|
||||
|
||||
plt.axis('equal')
|
||||
plt.axis('off')
|
||||
plt.tight_layout()
|
||||
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 参考
|
||||
|
||||
此示例中显示了以下函数,方法,类和模块的使用:
|
||||
|
||||
```python
|
||||
import matplotlib
|
||||
matplotlib.path
|
||||
matplotlib.path.Path
|
||||
matplotlib.lines
|
||||
matplotlib.lines.Line2D
|
||||
matplotlib.patches
|
||||
matplotlib.patches.Circle
|
||||
matplotlib.patches.Ellipse
|
||||
matplotlib.patches.Wedge
|
||||
matplotlib.patches.Rectangle
|
||||
matplotlib.patches.Arrow
|
||||
matplotlib.patches.PathPatch
|
||||
matplotlib.patches.FancyBboxPatch
|
||||
matplotlib.patches.RegularPolygon
|
||||
matplotlib.collections
|
||||
matplotlib.collections.PatchCollection
|
||||
matplotlib.cm.ScalarMappable.set_array
|
||||
matplotlib.axes.Axes.add_collection
|
||||
matplotlib.axes.Axes.add_line
|
||||
```
|
||||
|
||||
## 下载这个示例
|
||||
|
||||
- [下载python源码: artist_reference.py](https://matplotlib.org/_downloads/artist_reference.py)
|
||||
- [下载Jupyter notebook: artist_reference.ipynb](https://matplotlib.org/_downloads/artist_reference.ipynb)
|
||||
Reference in New Issue
Block a user