python – Plotly – 不同的颜色表面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Plotly – 不同的颜色表面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2823字,纯文字阅读大概需要5分钟。
内容图文
![python – Plotly – 不同的颜色表面](/upload/InfoBanner/zyjiaocheng/822/c91f415519e84c8a8a631e2bf5de198a.jpg)
我试图在Plotly for Python中绘制几个不同颜色的表面.
具体地,表面示出了用于在相空间中的不同点处采取动作的预测奖励函数.由于我在每个点都有几个可能的动作,每个动作都是不同的表面.我想要唯一地为每个表面着色,但不依赖于x,y或z坐标.
我试图在R中回答,但我无法弄清楚我做错了什么.我总是得到相同的蓝色.因为我在我的代码的其他部分使用PyPlot,所以我从默认的matplotlib表格中选择颜色.
这是玩具数据的基本示例.
import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objs as go
import plotly.offline as off
off.init_notebook_mode()
make_int = np.vectorize(int)
cmap = plt.get_cmap("tab10")
saddle = np.array([[x**2-y**2 for x in np.arange(-10,11)] for y in np.arange(-10,11)])
paraboloid = np.array([[x**2 + y**2-100 for x in np.arange(-10,11)] for y in np.arange(-10,11)])
mycolors_a = make_int(256*np.array(cmap(1)[0:3])).reshape((1, 1,-1)).repeat(21, axis = 0).repeat(21, axis =1)
mycolors_b = make_int(256*np.array(cmap(2)[0:3])).reshape((1, 1,-1)).repeat(21, axis = 0).repeat(21, axis =1)
trace_a = go.Surface(z = saddle, surfacecolor = mycolors_a, opacity = .7, showscale = False, name = "Trace A")
trace_b = go.Surface(z = paraboloid, surfacecolor = mycolors_b, opacity = .7, showscale = False, name = "Trace B")
data = [trace_a, trace_b]
off.iplot(data)
产生以下内容:
我应该看到一个蓝色的马鞍和一个橙色的抛物面,但我没有.请注意,即使我将参数更改为cmap,我也总是得到相同的蓝色.谢谢你的帮助!
解决方法:
documentation在这里有点神秘.
surfacecolor
(list, numpy array, or Pandas series of numbers, strings, or datetimes.)
Sets the surface color values, used for setting a color scale independent of
z
.
我从来没有设法列出字符串,即颜色值,如’rgb(0.3,0.5,0)’或RGB元组.
但您可以使用所需的颜色定义自己的色标.
colorscale = [[0, 'rgb' + str(cmap(1)[0:3])],
[1, 'rgb' + str(cmap(2)[0:3])]]
然后提供与绘制值具有相同尺寸的数值数组.
colors_saddle = np.zeros(shape=saddle.shape)
所有值都设置为0,因此将映射到色阶中的第一种颜色.对于下一种颜色也是如此.
此外,您需要手动设置cmax和cmin.
完整的代码
import numpy as np
import matplotlib.pyplot as plt
import plotly.graph_objs as go
import plotly.offline as off
off.init_notebook_mode()
make_int = np.vectorize(int)
cmap = plt.get_cmap("tab10")
saddle = np.array([[x**2-y**2 for x in np.arange(-10,11)] for y in np.arange(-10,11)])
paraboloid = np.array([[x**2 + y**2-100 for x in np.arange(-10,11)] for y in np.arange(-10,11)])
colors_saddle = np.zeros(shape=saddle.shape)
colors_paraboloid = np.ones(shape=paraboloid.shape)
colorscale = [[0, 'rgb' + str(cmap(1)[0:3])],
[1, 'rgb' + str(cmap(2)[0:3])]]
trace_a = go.Surface(z=saddle,
surfacecolor=colors_saddle,
opacity=.7,
name="Trace A",
cmin=0,
cmax=1,
colorscale=colorscale)
trace_b = go.Surface(z=paraboloid,
surfacecolor=colors_paraboloid,
opacity=.7,
name="Trace B",
cmin=0,
cmax=1,
showscale=False,
colorscale=colorscale)
data = [trace_a, trace_b]
off.iplot(data)
内容总结
以上是互联网集市为您收集整理的python – Plotly – 不同的颜色表面全部内容,希望文章能够帮你解决python – Plotly – 不同的颜色表面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。