Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cf08573

Browse files
authored
Merge pull request plotly#1128 from plotly/3d-hover-options
3d hover options
2 parents 1e2c1da + 3db97e5 commit cf08573

File tree

7 files changed

+850
-0
lines changed

7 files changed

+850
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
name: Customize Hover for Spikelines
3+
plot_url: https://codepen.io/plotly/embed/NOgjrR/?height=500&theme-id=15263&default-tab=result
4+
language: plotly_js
5+
suite: 3d-hover
6+
order: 1
7+
sitemap: false
8+
arrangement: horizontal
9+
markdown_content: |
10+
By default, Plotly's 3D plots display lines called "spikelines" while hovering over a point.
11+
These lines project from the hover point to each of the three axes' normal planes and
12+
then extend from those projection data points to the planes' wall boundaries.
13+
---
14+
15+
function getrandom(num , mul)
16+
{
17+
var value = [ ];
18+
for(i=0;i<=num;i++)
19+
{
20+
var rand = Math.random() * mul;
21+
value.push(rand);
22+
}
23+
return value;
24+
}
25+
26+
27+
var data=[
28+
{
29+
opacity:0.4,
30+
type: 'scatter3d',
31+
x: getrandom(50 , -75),
32+
y: getrandom(50 , -75),
33+
z: getrandom(50 , -75),
34+
},
35+
];
36+
var layout = {
37+
scene:{
38+
xaxis: {
39+
spikecolor: '#1fe5bd',
40+
spikesides: false,
41+
spikethickness: 6
42+
},
43+
yaxis: {
44+
spikecolor: '#1fe5bd',
45+
spikesides: false,
46+
spikethickness: 6
47+
},
48+
zaxis: {
49+
spikecolor: '#1fe5bd',
50+
spikethickness: 6
51+
}
52+
},
53+
};
54+
Plotly.newPlot('myDiv', data, layout);
55+
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
name: Customize Hover for Surface Contours
3+
plot_url: https://codepen.io/plotly/embed/qJjmbQ/?height=500&theme-id=15263&default-tab=result
4+
language: plotly_js
5+
suite: 3d-hover
6+
order: 2
7+
sitemap: false
8+
arrangement: horizontal
9+
markdown_content: |
10+
In addition to spikelines, Plotly 3D Surface plots also display surface contours on hover by default.
11+
These are customized by styling the [`contours`](https://plot.ly/javascript/reference/#surface-contours)
12+
attribute in the surface trace.
13+
---
14+
15+
x = [10,20,30,40]
16+
y = [0,1,2,3]
17+
z = [
18+
[2,2,2,3],
19+
[1,1,1,1],
20+
[1,1,0,0],
21+
[0,0,0,0]
22+
];
23+
24+
var data=[
25+
{
26+
opacity:0.9,
27+
type: 'surface',
28+
x:x, y:y, z:z,
29+
contours: {
30+
x: {
31+
highlight: true,
32+
highlightcolor: "#41a7b3"
33+
},
34+
y: { highlight: false },
35+
z: { highlight: false}
36+
}
37+
},
38+
];
39+
var layout = {
40+
scene:{
41+
xaxis: { showspikes: false },
42+
yaxis: { showspikes: false },
43+
zaxis: { showspikes: false }
44+
},
45+
};
46+
Plotly.newPlot('myDiv', data, layout);
47+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: Javascript Graphing Library D3.js-based Charts with 3d Hover Options | Examples | Plotly
3+
name: 3D Hover Options
4+
permalink: javascript/3d-hover/
5+
description: How to customize hover options for 3d charts.
6+
layout: base
7+
language: plotly_js
8+
page_type: example_index
9+
has_thumbnail: false
10+
display_as: layout_opt
11+
---
12+
{% assign examples = site.posts | where:"language","plotly_js" | where:"suite","3d-hover" | sort: "order" %}
13+
{% include auto_examples.html examples=examples %}
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
---
2+
permalink: python/3d-hover/
3+
description: How to customize 3d hover options in python with Plotly.
4+
name: Python 3D Hover Options | Plotly
5+
has_thumbnail: true
6+
thumbnail: thumbnail/3d-hover-options.jpg
7+
layout: user-guide
8+
name: 3D Hover Options
9+
language: python
10+
title: Python 3D Hover Options | Plotly
11+
display_as: layout_opt
12+
has_thumbnail: false
13+
page_type: example_index
14+
order: 19
15+
ipynb: ~notebook_demo/257
16+
---
17+
{% raw %}
18+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
19+
</div>
20+
<div class="inner_cell">
21+
<div class="text_cell_render border-box-sizing rendered_html">
22+
<h4 id="New-to-Plotly?">New to Plotly?<a class="anchor-link" href="#New-to-Plotly?">&#182;</a></h4><p>Plotly's Python library is free and open source! <a href="https://plot.ly/python/getting-started/">Get started</a> by downloading the client and <a href="https://plot.ly/python/getting-started/">reading the primer</a>.
23+
<br>You can set up Plotly to work in <a href="https://plot.ly/python/getting-started/#initialization-for-online-plotting">online</a> or <a href="https://plot.ly/python/getting-started/#initialization-for-offline-plotting">offline</a> mode, or in <a href="https://plot.ly/python/getting-started/#start-plotting-online">jupyter notebooks</a>.
24+
<br>We also have a quick-reference <a href="https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdf">cheatsheet</a> (new!) to help you get started!</p>
25+
26+
</div>
27+
</div>
28+
</div>
29+
<div class="cell border-box-sizing code_cell rendered">
30+
<div class="input">
31+
<div class="prompt input_prompt">In&nbsp;[1]:</div>
32+
<div class="inner_cell">
33+
<div class="input_area">
34+
<div class=" highlight hl-ipython2"><pre><span></span><span class="kn">import</span> <span class="nn">plotly.plotly</span> <span class="kn">as</span> <span class="nn">py</span>
35+
<span class="kn">import</span> <span class="nn">plotly.graph_objs</span> <span class="kn">as</span> <span class="nn">go</span>
36+
37+
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
38+
</pre></div>
39+
40+
</div>
41+
</div>
42+
</div>
43+
44+
</div>
45+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
46+
</div>
47+
<div class="inner_cell">
48+
<div class="text_cell_render border-box-sizing rendered_html">
49+
<h4 id="Customize-Hover-for-Spikelines">Customize Hover for Spikelines<a class="anchor-link" href="#Customize-Hover-for-Spikelines">&#182;</a></h4><p>By default, Plotly's 3D plots display lines called "spikelines" while hovering over a point.
50+
These lines project from the hover point to each of the three axes' normal planes and
51+
then extend from those projection data points to the planes' wall boundaries.</p>
52+
53+
</div>
54+
</div>
55+
</div>
56+
<div class="cell border-box-sizing code_cell rendered">
57+
<div class="input">
58+
<div class="prompt input_prompt">In&nbsp;[2]:</div>
59+
<div class="inner_cell">
60+
<div class="input_area">
61+
<div class=" highlight hl-ipython2"><pre><span></span><span class="kn">import</span> <span class="nn">plotly.plotly</span> <span class="kn">as</span> <span class="nn">py</span>
62+
<span class="kn">import</span> <span class="nn">plotly.graph_objs</span> <span class="kn">as</span> <span class="nn">go</span>
63+
64+
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
65+
66+
<span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">go</span><span class="o">.</span><span class="n">Scatter3d</span><span class="p">(</span>
67+
<span class="n">x</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">50</span><span class="p">),</span>
68+
<span class="n">y</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">50</span><span class="p">),</span>
69+
<span class="n">z</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">50</span><span class="p">),</span>
70+
<span class="p">)]</span>
71+
72+
<span class="n">layout</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Layout</span><span class="p">(</span>
73+
<span class="n">scene</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">Scene</span><span class="p">(</span>
74+
<span class="n">xaxis</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">XAxis</span><span class="p">(</span>
75+
<span class="n">spikecolor</span><span class="o">=</span><span class="s1">&#39;#1fe5bd&#39;</span><span class="p">,</span>
76+
<span class="n">spikesides</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
77+
<span class="n">spikethickness</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span>
78+
<span class="p">),</span>
79+
<span class="n">yaxis</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">YAxis</span><span class="p">(</span>
80+
<span class="n">spikecolor</span><span class="o">=</span><span class="s1">&#39;#1fe5bd&#39;</span><span class="p">,</span>
81+
<span class="n">spikesides</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
82+
<span class="n">spikethickness</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span>
83+
<span class="p">),</span>
84+
<span class="n">zaxis</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">ZAxis</span><span class="p">(</span>
85+
<span class="n">spikecolor</span><span class="o">=</span><span class="s1">&#39;#1fe5bd&#39;</span><span class="p">,</span>
86+
<span class="n">spikethickness</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span>
87+
<span class="p">),</span>
88+
<span class="p">)</span>
89+
<span class="p">)</span>
90+
91+
<span class="n">fig</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Figure</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">layout</span><span class="o">=</span><span class="n">layout</span><span class="p">)</span>
92+
<span class="n">py</span><span class="o">.</span><span class="n">iplot</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">&#39;hover-spikelines&#39;</span><span class="p">)</span>
93+
</pre></div>
94+
95+
</div>
96+
</div>
97+
</div>
98+
99+
<div class="output_wrapper">
100+
<div class="output">
101+
102+
103+
<div class="output_area">
104+
105+
<div class="prompt output_prompt">Out[2]:</div>
106+
107+
108+
109+
<div class="output_html rendered_html output_subarea output_execute_result">
110+
<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~PythonPlotBot/2829.embed" height="525px" width="100%"></iframe>
111+
</div>
112+
113+
</div>
114+
115+
</div>
116+
</div>
117+
118+
</div>
119+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
120+
</div>
121+
<div class="inner_cell">
122+
<div class="text_cell_render border-box-sizing rendered_html">
123+
<h4 id="Customize-Hover-for-Surface-Contours">Customize Hover for Surface Contours<a class="anchor-link" href="#Customize-Hover-for-Surface-Contours">&#182;</a></h4><p>In addition to spikelines, Plotly 3D Surface plots also display surface contours on hover by default.
124+
These are customized by styling the <a href="https://plot.ly/python/reference/#surface-contours"><code>contours</code></a>
125+
attribute in the surface trace.</p>
126+
127+
</div>
128+
</div>
129+
</div>
130+
<div class="cell border-box-sizing code_cell rendered">
131+
<div class="input">
132+
<div class="prompt input_prompt">In&nbsp;[3]:</div>
133+
<div class="inner_cell">
134+
<div class="input_area">
135+
<div class=" highlight hl-ipython2"><pre><span></span><span class="kn">import</span> <span class="nn">plotly.plotly</span> <span class="kn">as</span> <span class="nn">py</span>
136+
<span class="kn">import</span> <span class="nn">plotly.graph_objs</span> <span class="kn">as</span> <span class="nn">go</span>
137+
138+
<span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">40</span><span class="p">]</span>
139+
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">]</span>
140+
<span class="n">z</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span>
141+
<span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span>
142+
<span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span>
143+
<span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]]</span>
144+
145+
<span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">go</span><span class="o">.</span><span class="n">Surface</span><span class="p">(</span>
146+
<span class="n">opacity</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span>
147+
<span class="n">x</span><span class="o">=</span><span class="n">x</span><span class="p">,</span>
148+
<span class="n">y</span><span class="o">=</span><span class="n">y</span><span class="p">,</span>
149+
<span class="n">z</span><span class="o">=</span><span class="n">z</span><span class="p">,</span>
150+
<span class="n">contours</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">surface</span><span class="o">.</span><span class="n">Contours</span><span class="p">(</span>
151+
<span class="n">x</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">surface</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">X</span><span class="p">(</span>
152+
<span class="n">highlight</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
153+
<span class="n">highlightcolor</span><span class="o">=</span><span class="s2">&quot;#41a7b3&quot;</span><span class="p">,</span>
154+
<span class="p">),</span>
155+
<span class="n">y</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">surface</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">Y</span><span class="p">(</span><span class="n">highlight</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
156+
<span class="n">z</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">surface</span><span class="o">.</span><span class="n">contours</span><span class="o">.</span><span class="n">Z</span><span class="p">(</span><span class="n">highlight</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
157+
<span class="p">)</span>
158+
<span class="p">)]</span>
159+
160+
<span class="n">layout</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Layout</span><span class="p">(</span>
161+
<span class="n">scene</span><span class="o">=</span><span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">Scene</span><span class="p">(</span>
162+
<span class="n">xaxis</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">XAxis</span><span class="p">(</span><span class="n">showspikes</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
163+
<span class="n">yaxis</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">YAxis</span><span class="p">(</span><span class="n">showspikes</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
164+
<span class="n">zaxis</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">scene</span><span class="o">.</span><span class="n">ZAxis</span><span class="p">(</span><span class="n">showspikes</span><span class="o">=</span><span class="bp">False</span><span class="p">),</span>
165+
<span class="p">)</span>
166+
<span class="p">)</span>
167+
168+
<span class="n">fig</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Figure</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">layout</span><span class="o">=</span><span class="n">layout</span><span class="p">)</span>
169+
<span class="n">py</span><span class="o">.</span><span class="n">iplot</span><span class="p">(</span><span class="n">fig</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">&#39;hover-surface-contours&#39;</span><span class="p">)</span>
170+
</pre></div>
171+
172+
</div>
173+
</div>
174+
</div>
175+
176+
<div class="output_wrapper">
177+
<div class="output">
178+
179+
180+
<div class="output_area">
181+
182+
<div class="prompt output_prompt">Out[3]:</div>
183+
184+
185+
186+
<div class="output_html rendered_html output_subarea output_execute_result">
187+
<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~PythonPlotBot/2831.embed" height="525px" width="100%"></iframe>
188+
</div>
189+
190+
</div>
191+
192+
</div>
193+
</div>
194+
195+
</div>
196+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
197+
</div>
198+
<div class="inner_cell">
199+
<div class="text_cell_render border-box-sizing rendered_html">
200+
<h4 id="Reference">Reference<a class="anchor-link" href="#Reference">&#182;</a></h4>
201+
</div>
202+
</div>
203+
</div>
204+
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
205+
</div>
206+
<div class="inner_cell">
207+
<div class="text_cell_render border-box-sizing rendered_html">
208+
<p>See <a href="https://plot.ly/python/reference/#layout-scene">https://plot.ly/python/reference/#layout-scene</a> and <a href="https://plot.ly/python/reference/#surface-contours">https://plot.ly/python/reference/#surface-contours</a> for more information and options!</p>
209+
210+
</div>
211+
</div>
212+
</div>
213+
214+
215+
{% endraw %}

0 commit comments

Comments
 (0)