- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 3 个主成分(PC1、PC2、PC3)对我的数据运行了 sklearn - 主成分分析。数据看起来像这样(它是一个 pandas DataFrame):
下面是绘制主成分的代码:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
%matplotlib
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_title('3D Scatter Plot')
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')
ax.view_init(elev=12, azim=40) # elevation and angle
ax.dist=10 # distance
ax.scatter(
data_df_3dx['PC1'], data_df_3dx['PC2'], data_df_3dx['PC3'], # data
#color='purple', # marker colour
#marker='o', # marker shape
s=60 # marker size
)
plt.show()
我的问题是,如何为点添加标签(如“GER,medium”)?希望有人能帮助我:)
最佳答案
在以下帖子中[1] , [2]讨论了 matplotlib 中 3D 箭头的绘制。
同样可以创建Annotation3D类(继承自Annotation):
from mpl_toolkits.mplot3d.proj3d import proj_transform
from matplotlib.text import Annotation
class Annotation3D(Annotation):
'''Annotate the point xyz with text s'''
def __init__(self, s, xyz, *args, **kwargs):
Annotation.__init__(self,s, xy=(0,0), *args, **kwargs)
self._verts3d = xyz
def draw(self, renderer):
xs3d, ys3d, zs3d = self._verts3d
xs, ys, zs = proj_transform(xs3d, ys3d, zs3d, renderer.M)
self.xy=(xs,ys)
Annotation.draw(self, renderer)
进一步,我们可以定义annotate3D()函数:
def annotate3D(ax, s, *args, **kwargs):
'''add anotation text s to to Axes3d ax'''
tag = Annotation3D(s, *args, **kwargs)
ax.add_artist(tag)
使用此功能注释标签可以添加到 Axes3d,如下例所示:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from mpl_toolkits.mplot3d.art3d import Line3DCollection
# data: coordinates of nodes and links
xn = [1.1, 1.9, 0.1, 0.3, 1.6, 0.8, 2.3, 1.2, 1.7, 1.0, -0.7, 0.1, 0.1, -0.9, 0.1, -0.1, 2.1, 2.7, 2.6, 2.0]
yn = [-1.2, -2.0, -1.2, -0.7, -0.4, -2.2, -1.0, -1.3, -1.5, -2.1, -0.7, -0.3, 0.7, -0.0, -0.3, 0.7, 0.7, 0.3, 0.8, 1.2]
zn = [-1.6, -1.5, -1.3, -2.0, -2.4, -2.1, -1.8, -2.8, -0.5, -0.8, -0.4, -1.1, -1.8, -1.5, 0.1, -0.6, 0.2, -0.1, -0.8, -0.4]
group = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 3, 3, 3, 3]
edges = [(1, 0), (2, 0), (3, 0), (3, 2), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (11, 10), (11, 3), (11, 2), (11, 0), (12, 11), (13, 11), (14, 11), (15, 11), (17, 16), (18, 16), (18, 17), (19, 16), (19, 17), (19, 18)]
xyzn = zip(xn, yn, zn)
segments = [(xyzn[s], xyzn[t]) for s, t in edges]
# create figure
fig = plt.figure(dpi=60)
ax = fig.gca(projection='3d')
ax.set_axis_off()
# plot vertices
ax.scatter(xn,yn,zn, marker='o', c = group, s = 64)
# plot edges
edge_col = Line3DCollection(segments, lw=0.2)
ax.add_collection3d(edge_col)
# add vertices annotation.
for j, xyz_ in enumerate(xyzn):
annotate3D(ax, s=str(j), xyz=xyz_, fontsize=10, xytext=(-3,3),
textcoords='offset points', ha='right',va='bottom')
plt.show()
关于python-3.x - 如何注释标签到 3D matplotlib 散点图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870241/
默认情况下,对于不是他的“ friend ”的用户,来自用户的哪些信息是可用的? 我可以仅通过发出 API 请求来获得任何 Foursquare 用户的“签到”列表吗? 我可以获取有关用户的哪些信息,
我们最近在测试版代码的主分支之外创建了一个分支。 现在我想检查过去一周分支中所有文件的更改情况。如何从 CVS 中获取该信息。 这个命令是什么? 最佳答案 从命令行: cvs log -r BRANC
我有一个 Facebook 页面,它也是 FB 中的一个地方,因此用户可以在那个地方签到(例如使用 iPhone)。现在我想从我的页面中获取所有 checkin 的用户。但是我总是得到一个空数组,即使
我有一个 Facebook 页面,它也是 FB 中的一个地方,因此用户可以在那个地方签到(例如使用 iPhone)。现在我想从我的页面中获取所有 checkin 的用户。但是我总是得到一个空数组,即使
我想在我的网站上显示一张 map ,显示我最后一次 Foursquare 签到。 有一篇很棒的博客文章解释了如何做到这一点 here . 但是,我担心我会达到 Foursquare API 速率限制
我在使用 checkin api 时有点困惑。每次当我调用“me/checkins”时,我得到的响应都是空的。我不知道实际登记是如何运作的。 谢谢。 最佳答案 我相信要查看用户的 checkin ,您
我正在尝试建立一个在线考勤系统,员工每天都可以签到并签到(周末和假期除外)。 所以,我的想法是创建每日出勤记录作为数据库中的表格。 Attendance_date_daily date
我想在 Facebook 中设置“签到”操作。我在 js 中使用 facebook sdk。 据我了解,我尝试了这段代码: coordinate={"latitude":"32.06348128000
我正在尝试构建一个应用程序,让我的注册用户能够在 Facebook Places 上签到地点。然而,出于某种原因,我似乎无法完成这项工作。我认为 Api 可以做到这一点,因为它已经添加了写入功能,但我
我正在尝试使用 Facebook 在我的应用程序中进行签到,我已经创建了故事、 Action 和对象类型。 Facebook 给了我代码: NSMutableDictionary *object =
我的客户向我提出了这个要求: 另一个图标标签 Places 是用户可以报告他们所在位置的地方,以便 friend 和家人能够找到用户。 我是 iPhone 和 android 编程的新手,我不需要为此
我想知道在哪里可以学习如何将 Facebook 地方信息集成到我的网站上。 我希望为用户提供选择附近地点的功能,如果我可以使用 Facebook Places 来让观众更轻松地完成此过程,那将会非常有
我想做一个服务器端 checkin 。我有经纬度坐标;我知道公司的名称和街道地址。有没有办法获取参数 Parameter.with("place", 1234) 的 placeId? Facebook
我想使用 facebook android sdk (graph api) 签到, 我正在尝试这个 String checkinData = "{"+
我是一名优秀的程序员,十分优秀!