背景:
这个问题与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:
我认为最自然的事情就是每个月的第一天(取决于课程的不同时期)。或者甚至只是在每个勾号上加上一个缩写的月份名称,比如'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)
解决方案:
如何设置网格线将完全取决于您想要显示的内容,以及在您尝试编辑设置之前如何构建图形。但是为了得到问题中指定的结果,你可以这样做。在
第1步:
为
fig['data']
中的每个系列编辑fig['data'][series]['x']
。在第2步:
将tickmode和ticktext设置为:
结果:
Jupyter笔记本的完整代码:
^{pr2}$一些重要细节:
1。使用
iplot()
的灵活性和限制:这种使用
iplot()
并编辑所有这些设置的方法有点笨拙,但是它对于数据集中的列/变量的数量非常灵活,并且可以说比手动构建每个跟踪更可取,比如为df中的每一列生成trace1 = go.Scatter()
。在2。为什么要编辑每个序列/轨迹?
如果你想跳过中间部分
并尝试在整个绘图上直接设置
tickvals
和ticktext
,这不会有任何效果:我认为这有点奇怪,但我认为这是由
iplot()
启动的一些底层设置造成的。在3。仍然缺少一件事:
为了让这个设置正常工作,}的结构分别是}。这导致xaxis行悬停文本显示}为空的数据位置:
ticvals
和{[0, 31, 59, 90]
和{ticvals
和{任何关于如何改进整件事的建议都是非常感谢的。比我自己的解决方案更好的解决方案将立即获得“接受答案”状态!在
相关问题 更多 >
编程相关推荐