- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用 matplotlib 重现此图像。示例文档有 numpy logo ,但所有体素立方体的颜色都是均匀的。
我可以想象也许为我想要改变的每张脸制作一个单独的曲面图,但这似乎不切实际。以下是示例文档 numpy Logo 的代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
def explode(data):
size = np.array(data.shape)*2
data_e = np.zeros(size - 1, dtype=data.dtype)
data_e[::2, ::2, ::2] = data
return data_e
# build up the numpy logo
n_voxels = np.zeros((4, 3, 4), dtype=bool)
n_voxels[0, 0, :] = True
n_voxels[-1, 0, :] = True
n_voxels[1, 0, 2] = True
n_voxels[2, 0, 1] = True
facecolors = np.where(n_voxels, '#FFD65DC0', '#7A88CCC0')
edgecolors = np.where(n_voxels, '#BFAB6E', '#7D84A6')
filled = np.ones(n_voxels.shape)
# upscale the above voxel image, leaving gaps
filled_2 = explode(filled)
fcolors_2 = explode(facecolors)
ecolors_2 = explode(edgecolors)
# Shrink the gaps
x, y, z = np.indices(np.array(filled_2.shape) + 1).astype(float) // 2
x[0::2, :, :] += 0.05
y[:, 0::2, :] += 0.05
z[:, :, 0::2] += 0.05
x[1::2, :, :] += 0.95
y[:, 1::2, :] += 0.95
z[:, :, 1::2] += 0.95
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.voxels(x, y, z, filled_2, facecolors=fcolors_2, edgecolors=ecolors_2)
plt.show()
最佳答案
'''
=====================================
Rotating 3D voxel animation of PYTHON
=====================================
Demonstrates using ``ax.voxels`` with uneven coordinates
'''
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as manimation
from math import copysign
def explode(data):
size = np.array(data.shape)*2
data_e = np.zeros(size - 1, dtype=data.dtype)
data_e[::2, ::2, ::2] = data
return data_e
def voxel_face(corns, dm, nf):
'''
Grab the corner coordinates of one voxel face
Parameters
----------
corns : np.indices array of corners for one voxel
dm : (dimension), values can be 0(x), 1(y), 2(z)
nf : (near/far face), values can be 0(near), 1(far)
'''
lc = corns.copy() #local copy so we don't swap original
if dm == 1 : #swap y into x and correct ordering
lc[0], lc[1] = corns[1].transpose(1,0,2), corns[0].transpose(1,0,2)
if dm == 2 : #swap z into x and correct ordering
lc[0], lc[2] = corns[2].transpose(2,1,0), corns[0].transpose(2,1,0)
ret = np.zeros((3,2,2))
xc1 = lc[0,nf,0,0] #hold x dim constant
ret[0,:] = np.array([[xc1, xc1], [xc1, xc1]])
yc1, yc2 = lc[1,0,0:2,0]
ret[1,:] = np.array([[yc1, yc2], [yc1, yc2]])
zc1, zc2 = lc[2,0,0,0:2]
ret[2,:] = np.array([[zc1, zc1], [zc2, zc2]])
if dm != 0 : #swap x back into desired dimension
ret[0], ret[dm] = ret[dm].copy(), ret[0].copy()
return ret
# build PYTHON letters
n_voxels = np.zeros((4, 4, 5), dtype=bool)
letters = [None]*6
letter_faces = np.zeros((6,2),dtype=int)
#P
n_voxels[0, 0, :] = True
n_voxels[:, 0, -3] = True
n_voxels[:, 0, -1] = True
n_voxels[-1, 0, -2] = True
letters[0] = np.array(np.where(n_voxels)).T
letter_faces[0] = [1, 0] #close y face
n_voxels[...] = False
#Y
n_voxels[-1, 0, -3:] = True
n_voxels[-1, -1, :] = True
n_voxels[-1, :, -3] = True
n_voxels[-1, :, 0] = True
letters[1] = np.array(np.where(n_voxels)).T
letter_faces[1] = [0, 1] #far x face
n_voxels[...] = False
#T
n_voxels[:, 0, -1] = True
n_voxels[1:3, :, -1] = True
letters[2] = np.array(np.where(n_voxels)).T
letter_faces[2] = [2, 1] #far z face
n_voxels[...] = False
#H
n_voxels[0, 0, :] = True
n_voxels[0, -1, :] = True
n_voxels[0, :, 2] = True
letters[3] = np.array(np.where(n_voxels)).T
letter_faces[3] = [0, 0] #close x face
n_voxels[...] = False
#O
n_voxels[0, 1:3, 0] = True
n_voxels[-1, 1:3, 0] = True
n_voxels[1:3, 0, 0] = True
n_voxels[1:3, -1, 0] = True
letters[4] = np.array(np.where(n_voxels)).T
letter_faces[4] = [2, 0] #close z face
n_voxels[...] = False
#N
n_voxels[0, -1, :] = True
n_voxels[-1, -1, :] = True
n_voxels[1, -1, 1:3] = True
n_voxels[2, -1, 2:4] = True
letters[5] = np.array(np.where(n_voxels)).T
letter_faces[5] = [1, 1] #far y face
n_voxels[...] = False
fcol = np.full(n_voxels.shape, '#7A88CC60')
ecol = np.full(n_voxels.shape, '#7D84A6')
filled = np.ones(n_voxels.shape)
# upscale the above voxel image, leaving gaps
filled_2 = explode(filled)
fcolors_2 = explode(fcol)
ecolors_2 = explode(ecol)
# Shrink the gaps
corn = np.indices(np.array(filled_2.shape) + 1).astype(float) // 2
ccorn = 0.05 #close corner
fcorn = 1.0 - ccorn
corn[0,0::2, :, :] += ccorn
corn[1,:, 0::2, :] += ccorn
corn[2,:, :, 0::2] += ccorn
corn[0,1::2, :, :] += fcorn
corn[1,:, 1::2, :] += fcorn
corn[2,:, :, 1::2] += fcorn
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.axis("off")
#Plot the voxels
x, y, z = corn
ax.voxels(x, y, z, filled_2, facecolors=fcolors_2, edgecolors=ecolors_2)
#Plot the letter square faces
jj=0
for j in [x for x in letters if x is not None]:
locf = np.empty((j.shape[0],3,2,2)) #local face
ji = 0
for i in j:
i = i * 2 #skip empty voxels
loc = corn[:,i[0]:i[0]+2,i[1]:i[1]+2,i[2]:i[2]+2] #local corners
locf[ji] = voxel_face(loc, letter_faces[jj,0], letter_faces[jj,1])
ax.plot_surface(locf[ji,0],locf[ji,1],locf[ji,2],color='#ffe500a0',
shade=False)
ji += 1
jj += 1
#Views: PY, P, Y, T, H, O, N, PY
view_elev = [ 5, 0, 0, 90, 0, -90, 0, 5]
view_azim = [-60, -90, 0, 90, 180, 180, 90, -60]
#'''
FFMpegWriter = manimation.writers['ffmpeg']
metadata = dict(title='Movie Test', artist='Matplotlib',
comment='Movie support!')
writer = FFMpegWriter(fps=25, metadata=metadata)
with writer.saving(fig, "pythonRot2.mp4", 100):
for j in range(20):
ax.view_init(view_elev[0], view_azim[0])
plt.draw()
writer.grab_frame()
for i in range(1,len(view_elev)):
de = (view_elev[i] - view_elev[i-1])
da = (view_azim[i] - view_azim[i-1])
if abs(da) >= 180 : #unecessary in this config
da -= copysign(360, da)
if abs(de) >= 180 :
de -= copysign(360, de)
if i != 1 :
steps = 60
else :
steps = 10
da = da / steps
de = de / steps
for j in range(10): #Pause on direct view of a letter
ax.view_init(view_elev[i-1], view_azim[i-1])
plt.draw()
writer.grab_frame()
for j in range(steps): #Rotate to next letter
ax.view_init(view_elev[i-1] + j*de,
view_azim[i-1] + j*da)
plt.draw()
writer.grab_frame()
#'''
关于python - matplotlib:更改单个体素面颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833850/
我的问题是 p:dialog 没有显示出来。监听器被触发,没有错误消息。我的要求是:当我选择一行时,必须在对话框中显示行详细信息。 请帮帮我。提前致谢。
我想要一个按钮和一个图形图像。默认情况下,不显示图形图像。如果用户单击该按钮,则会显示图形图像(呈现 = 真)。 我可以做到,但我必须刷新页面才能看到显示的图形图像。 我想我必须使用 ajax 组件来
我创建了一个登录页面用户正确输入用户名和密码后,他将被引导到另一个页面(主页) @ManagedBean public class Superviseur { private String l
我想在布局单元 (p:layoutUnit) 内将我的仪表板 (p:dashboard) 显示为居中对齐(垂直和水平)。我尝试提供 [position="center"] ,但没有用。我使用谷歌浏览器
我的 p:dialog 不断加载,我只需要它出现一次。有谁知道怎么做? $(document).ready(function() { document.ge
我正在使用组件 p:panelGrid,并在其中放置了表单的各种组件。我很惊讶,为了便于理解代码,我放了一个注释,他把它看作是一个组件,并根据注释进行排序。 谁能向我解释为什么会发生这种情况? 最佳答
我在 Primefaces 3.2 和 JSF 2.1 上遇到了一些麻烦。 我的代码是这样的: 当我查看 Primefaces Sh
您好,我正在使用 js2+ primefaces,这是我用来阻止 UI 的代码 ---
我很困惑为什么 IE 和 Chrome 无法呈现我的 Primefaces 3 UI。 我基本上有这个用例:我想要一个添加新成员按钮,当用户单击它时,将打开一个对话框,询问成员详细信息。
我正在使用 JSF 和 PrimeFaces,但我无法处理以下情况:我有一个对话框,我在上面放了一个数据表。在表格的一个单元格中,我想以 3 种不同的方式显示给定的数据,并且我想在它们之间切换。到目前
我是 JSF/Primefaces 的新手,所以也许我以错误的方式解决了这个问题,而且我一直在搜索论坛但没有运气。 我最大限度地简化了问题,并使用了Damian的那个@PostConstruct 所以
我们的项目使用 JSF 2.2 primeface 5.1。我使用以下代码在我的 JSF 页面中显示数据表,我添加了 用于基于动态列类型的动态过滤器。但是当我在每列的头部输入条件或选择下拉列表时,数据
not working with IE 9
我在使用 IE 浏览时遇到问题 http://gamma.j.layershift.co.uk 我的网站是使用带有 primefaces 3.5 的 JSF2 构建的。 **页面的其余部分可以在 Fi
我有一些不能是ajax请求的请求,有没有什么办法仍然使用带有非ajax请求的p:ajaxStatus组件。 最佳答案 非 ajax 请求完全重新加载整个页面。所以你不能直接使用 p:ajaxStatu
我在使用 primefaces 5.0 和 jsf 2.2.5 时遇到了问题。用一个 p:tabView 两个选项卡共享相同的 ManagedBean 和相同的对象事件 tabChange没有按预期工
我在 JSF 应用程序中使用 p:remoteCommand。我有 7 个不同的 p:remoteCommand 声明来调用 bean 中的不同操作。点击按钮,这7个远程命令同时被调用。调用了 JS
给定以下primefaces数据 某人如何获得(在服务器端)用户在过滤器文本列中给出的过滤器“文本”值? 我试着用“listen
我想将谷歌地图的地理编码器地址传递给ManagedBean,但我必须在 map 上选择两次,我想是因为在地址传递给ManagedBean之前执行了方法(onPointSelect) 托管 bean :
p:fileUpload 中的更新属性和 onComplete 在 IE10 中不起作用。在 IE 9 中 sizeLimit 属性被忽略。有没有人遇到过这种情况。 我尝试通过在 p:fileUolo
我不确定这种行为是否正常。 我希望我的 panel只有在点击触发 ajax 的按钮后才会呈现要求。 不使用 Ajax 工作正常: p:panel id="myPanel" rendered="#{my
我是一名优秀的程序员,十分优秀!