Plotly如何为x轴的主要刻度/网格线设置值?

2024-06-16 22:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:

这个问题与Plotly: How to retrieve values for major ticks and gridlines?有关,但不完全相同。也有人问过类似的问题,但没有人回答matplotlib这里:How do I show major ticks as the first day of each months and minor ticks as each day?


情节很精彩,唯一让我困扰的是自动选择刻度线/网格线以及为x轴选择的标签,就像在这幅图中:

地块1:

enter image description here

我认为最自然的事情就是每个月的第一天(取决于课程的不同时期)。或者甚至只是在每个勾号上加上一个缩写的月份名称,比如'Jan'。我意识到技术上甚至视觉上的挑战都是因为每个月的长度并不相等。但有人知道怎么做吗?在

可复制片段:

import plotly
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np
from IPython.display import HTML
from IPython.core.display import display, HTML
import copy

# setup
init_notebook_mode(connected=True)
np.random.seed(123)
cf.set_config_file(theme='pearl')

# Random data using cufflinks
df = cf.datagen.lines()
#df = df['UUN.XY']

fig = df.iplot(asFigure=True, kind='scatter',
               xTitle='Dates',yTitle='Returns',title='Returns')

iplot(fig)

Tags: andfromimportdfasdisplayplotlycf
1条回答
网友
1楼 · 发布于 2024-06-16 22:31:23

解决方案:

如何设置网格线将完全取决于您想要显示的内容,以及在您尝试编辑设置之前如何构建图形。但是为了得到问题中指定的结果,你可以这样做。在

第1步:

fig['data']中的每个系列编辑fig['data'][series]['x']。在

第2步:

将tickmode和ticktext设置为:

go.Layout(xaxis = go.layout.XAxis(tickvals = [some_values]
                                  ticktext = [other_values])
          )

结果:

enter image description here

Jupyter笔记本的完整代码:

^{pr2}$

一些重要细节:


1。使用iplot()的灵活性和限制:

这种使用iplot()并编辑所有这些设置的方法有点笨拙,但是它对于数据集中的列/变量的数量非常灵活,并且可以说比手动构建每个跟踪更可取,比如为df中的每一列生成trace1 = go.Scatter()。在

2。为什么要编辑每个序列/轨迹?

如果你想跳过中间部分

for ser in range(0,len(fig['data'])):

    fig['data'][ser]['x'] = df1['idx'].values.tolist()
    fig['data'][ser]['text'] = df1['mth'].values.tolist()
    fig['data'][ser]['hoverinfo']='all'

并尝试在整个绘图上直接设置tickvalsticktext,这不会有任何效果:

enter image description here

我认为这有点奇怪,但我认为这是由iplot()启动的一些底层设置造成的。在

3。仍然缺少一件事:

为了让这个设置正常工作,ticvals和{}的结构分别是[0, 31, 59, 90]和{}。这导致xaxis行悬停文本显示ticvals和{}为空的数据位置:

enter image description here

任何关于如何改进整件事的建议都是非常感谢的。比我自己的解决方案更好的解决方案将立即获得“接受答案”状态!在

相关问题 更多 >