使用matplotlib.patches.Arc
可以使半橢圓形,只需指定關鍵字theta1=0.0, theta2=180.0
(或90至270)。 我寫了一個名爲arcs
的包裝函數,用於製作Arc
s的散點圖。 它使用PatchCollection,應該有更好的性能並啓用colorbar。 你可以在gist (link)找到它。
下面是一個例子:
a = np.arange(11)
arcs(a, a, w=4, h=a, rot=a*30, theta1=0.0, theta2=180.0,
c=a, alpha=0.5, edgecolor='none')
plt.colorbar()
的簡要實施arcs
張貼下面完整性埃德·史密斯建議。
def arcs(x, y, w, h, rot=0.0, theta1=0.0, theta2=360.0,
c='b', **kwargs):
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Arc
from matplotlib.collections import PatchCollection
if np.isscalar(c):
kwargs.setdefault('color', c)
c = None
zipped = np.broadcast(x, y, w, h, rot, theta1, theta2)
patches = [Arc((x_, y_), w_, h_, rot_, t1_, t2_)
for x_, y_, w_, h_, rot_, t1_, t2_ in zipped]
collection = PatchCollection(patches, **kwargs)
if c is not None:
c = np.broadcast_to(c, zipped.shape).ravel()
collection.set_array(c)
ax = plt.gca()
ax.add_collection(collection)
return collection
完整版可以在gist (link)找到。
僅供參考,'matplotlib.patches.Arc'可以填充半橢圓。 –
你有這個@Syrtis Major的參考嗎?這裏是'matplotlib.patches.Arc'官方文檔:http://matplotlib.org/api/patches_api.html#module-matplotlib.patches明確地說:「因爲它執行各種優化,所以不能填充。」 –
啊,我沒有注意到文檔,但只是試了一下(見下面的答案)。我不確定爲什麼,也許文檔有點過時? –