开发者社区 问答 正文

如何在标记+文本模式中旋转文本

所以我尝试用Plotly软件来制作XRD分析图,但是我发现了一个小问题……它是关于旋转文字在“标记+文字”模式在gog . scatter。下面是一些代码:

import plotly
import chart_studio.plotly
import plotly.graph_objects as go
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import plotly.express as px
import math
from plotly.subplots import make_subplots

AuBN_US = np.genfromtxt('somedatfile.dat')
AuBN_noUS = np.genfromtxt('otherdatafile.dat')
dataBN = pd.read_csv('somecsvfile.csv', sep=';')
dataAu = pd.read_csv('othercsvfile.csv', sep=';')    
fig = make_subplots(rows=2, cols=1, y_title='Intensity', x_title="2\u03F4")

fig.add_trace(go.Scatter(x=AuBN_US[:,0], y=AuBN_US[:,1],
                             mode='lines',
                             name='AuBN_US'),
                             row=1, col=1)
fig.add_trace(go.Scatter(x=AuBN_noUS[:,0], y=AuBN_noUS[:,1],
                             mode='lines',
                             name='AuBN_noUS'),
                             row=2, col=1)
fig.add_trace(go.Scatter(x = dataBN['Angle'], y = dataBN['Int']+100,
                             mode='markers+text',
                             text=dataBN['hkl'],
                             textposition="top center",
                             name='BN',
                             orientation='v',
                             marker=dict(size=10, symbol="triangle-down")))

fig.add_trace(go.Scatter(x= dataAu['Angle'], y=dataAu['Int']+100,
                             name='Au',
                             mode='markers+text',
                             text=dataAu['hkl'],
                             textposition="top center",
                             orientation='v',
                             marker=dict(size=10, symbol="square")))

fig.update_layout(template="plotly_white", font=dict(family="Courier New, 
                                                     monospace",
                                                     size=14,
                                                     color="black"))
fig.show()   

得到这个结果 结果, 是否可以简单地旋转所有索引(100…)? 我已经尝试“textangle”,但总是得到错误。 问题来源StackOverflow 地址:/questions/59380055/how-to-rotate-text-plotly-in-markerstext-mod

展开
收起
kun坤 2019-12-29 21:32:03 808 分享 版权
阿里云 AI 助理回答

在Plotly中,要旋转使用mode='markers text'的文本标签,您需要使用textfont属性中的rotation参数来控制文本的角度。您的代码中没有直接体现这个参数的使用,这可能是导致尝试使用textangle时遇到错误的原因。实际上,正确的参数名应该是嵌套在textfont里面。

请参考以下修改后的代码段,我已添加了textfont=dict(rotation=45)来旋转所有索引(如100等)文本45度作为示例:

fig.add_trace(go.Scatter(
    x=dataBN['Angle'], 
    y=dataBN['Int']*100,  # 注意这里的*100可能之前有误,确保这是您想要的操作
    mode='markers text',
    text=dataBN['hkl'],
    textposition="top center",
    name='BN',
    orientation='v',
    marker=dict(size=10, symbol="triangle-down"),
    textfont=dict(  # 添加这一行来控制文本旋转
        rotation=45,  # 这里是您想要的旋转角度
    )
))

fig.add_trace(go.Scatter(
    x=dataAu['Angle'], 
    y=dataAu['Int']*100,  # 同样注意这里的操作
    name='Au',
    mode='markers text',
    text=dataAu['hkl'],
    textposition="top center",
    orientation='v',
    marker=dict(size=10, symbol="square"),
    textfont=dict(  # 对第二个trace也进行同样的设置
        rotation=45,
    )
))

这段修改应该能帮助您实现所需的文字旋转效果。记得根据实际情况调整旋转角度(这里以45度为例)。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: