如何在Plotly交互式图中手动更改标记形状

9
我正在尝试为Plotly交互式图形分配不同的标记颜色。通过使用以下脚本,我可以获取交互式图形,可以更改标记'o'的大小,可以注释文本。我得到的Plotly图形已附上。我想将标记更改为PCA图中的标记。 plotly_plot PCA plot

#脚本

import plotly 
import plotly.plotly as py
from plotly.graph_objs import Scatter
import plotly.graph_objs as go
plotly.tools.set_credentials_file(username='XXX', api_key='XXXX')
#py.plot(data, filename = 'basic-line', auto_open=True, Transforms = 'Split')

trace1 = Scatter(
    x=x1,           # x-coordinates of trace
    y=y1,          # y-coordinates of trace
    mode='markers + text',   # scatter mode
    text = label1, textposition='top center',
    marker = dict(size = 15, color = color_3),
     textfont=dict(
        color='black',
        size=18,
        family='Times New Roman'
     )

    )

layout = {
    'xaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    },
    'yaxis': {
        'showticklabels': False,
        'showgrid': False,
        'zeroline': False,
    }
}
data = [trace1]

fig = {
    'data': data,
    'layout': layout,
}

py.plot(fig, filename='example1')

我已经手动更改了散点的颜色,我有一组颜色列表(color_3)。我可以为每种颜色分配一个标记,比如marker_list。但是如何在plotly中使用这个marker_list来获得类似于附加的PCA图的绘图?在制作PCA图时,我将其添加到ax.scatter中,如下面的片段所示:
for i in range(len(marker_list)):
    ax.scatter(x1[i], y1[i], color = color_3[i], s=150, marker=marker_list[i], alpha=0.8, edgecolors='none')

我可以在上面的脚本中使用同一列表来获取一个交互式的plotly绘图吗?任何帮助将不胜感激。提前感谢你。 更新 根据Iljas的建议,并使用列表中的名称而不是数字,我得到了以下绘图类型。enter image description here

“交互式 plotly 图” 是什么意思?一种下拉菜单,可以按类别选择标记类型? - ilja
我是说我可以通过选择这个图的某些区域来缩放。我需要知道在哪里可以使用标记类型? - hemanta
1个回答

11

您可以使用 symbol 属性设置标记的形状,例如:

trace1 = Scatter(
    x=x1,           # x-coordinates of trace
    y=y1,          # y-coordinates of trace
    mode='markers + text',   # scatter mode (more in UG section 1)
    text = label1, textposition='top center',
    marker = dict(size = 15, color = color_3, symbol = 'cross'), # Add symbol here!
     textfont=dict(
        color='black',
        size=18,
        family='Times New Roman'
     )

文档中可以找到不同形状的概述。

当然,您也可以像颜色一样通过类别传递不同形状的列表。


我之前尝试过,但我的错误是我使用了列表中的编号而不是名称作为标记。这些数字表示什么?感谢您指出确切的问题并考虑它。 - hemanta
你说得完全正确,你可以使用数字代替符号名称。也许你的输入是一个字符串(symbol = '100' - 不起作用),而不是一个整数(symbol = 100 - 应该可以工作)? - ilja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接