我想绘制由质量和强度数组给出的光谱。我想为每对画一条细线。当我放大时,线条的宽度不应改变。条形图几乎可以满足我的需求。
import plotly.graph_objects as go
fig = go.Figure(data=[go.Bar(
x=df['mz_array'],
y=df['intensity'],
width = 1
)])
fig.show()
但是,当我放大条形时,会更改其宽度。
答案 0 :(得分:0)
我修改了数据框,然后使用px.line
绘制频谱:
def plot_spectrum(df, annot_threshold=1e4, threshold=0):
df = df[df.intensity > threshold].reset_index()
df1 = df.copy()
df1['Text'] = df1.mz_array.astype(str)
df1.loc[df1.intensity < annot_threshold, 'Text'] = None
df1.Text.notnull().sum()
df2 = df.copy()
df2['intensity'] = 0
df3 = pd.concat([df1, df2]).sort_values(['index', 'intensity'])
fig = px.line(df3, x='mz_array', y='intensity', color='index', text='Text')
fig.update_layout(showlegend=False)
fig.update_traces(line=dict(width=1, color='grey'))
fig.update_traces(textposition='top center')
return fig