據我瞭解,你希望你的標記是成比例的。這是plt.scatter()
不可能的,因爲它的標記總是以像素爲單位。一個選項是使用補丁並將它們添加到PatchCollection中。
下面是一個例子
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection
patches = []
coordinates = [(0,0), (2,0), (5,2), (1,7.6), (6,7), (2,4), (-1,5)]
sizes = 0.9+np.random.rand(len(coordinates),2)*1.99
print sizes
for i, co in enumerate(coordinates):
rect = mpatches.Rectangle(co, sizes[i,0], sizes[i,1], ec="k")
patches.append(rect)
fig, ax = plt.subplots(figsize=(6,5))
ax.set_aspect("equal")
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)
norm_scale = mpatches.Rectangle((7,-1), 2,2, ec="k", facecolor="b")
ax.add_patch(norm_scale)
ax.set_xlim([-2,10])
ax.set_ylim([-2,10])
ax.set_ylabel("position [meters]")
ax.set_xlabel("position [meters]")
ax.set_title("Tents on a meddow")
ax.text(8,0.9, "2 m", color="w", ha="center", va="top")
ax.text(7.1,0, "2 m", color="w", ha="left", va="center", rotation=90)
plt.show()
給下面的情節,其中深藍色補丁是一種顯示一個標準尺寸的關鍵。
問題不是很清楚。如果標記的大小代表一些值,例如* 10像素製造商是1英寸,12像素製造商是2英寸*或者標記大小實際上是否與軸相關聯,例如1英寸標記的長度是1英寸?後者是在拓撲圖中遇到的問題,但是閱讀您的問題我不確定這是否意味着什麼。你能說出軸上的數量,以及如果你想在不同的尺度上繪圖(放大繪圖等)? – ImportanceOfBeingErnest