1
+ ---
2
+ permalink: python/3d-surface-plots/
3
+ description: How to make 3D-surface plots in Python
4
+ name: 3D Surface Plots in Python | plotly
5
+ has_thumbnail: true
6
+ thumbnail: thumbnail/3d-surface.jpg
7
+ layout: user-guide
8
+ name: 3D Surface Plots
9
+ language: python
10
+ title: 3D Surface Plots in Python | plotly
11
+ display_as: 3d_charts
12
+ has_thumbnail: true
13
+ page_type: example_index
14
+ order: 6
15
+ ---
16
+ {% raw %}
17
+ < div class ="cell border-box-sizing text_cell rendered ">
18
+ < 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 ="Topographical-3D-Surface-Plot "> Topographical 3D Surface Plot< a class ="anchor-link " href ="#Topographical-3D-Surface-Plot "> ¶</ a > </ h4 >
23
+ </ div >
24
+ </ div >
25
+ </ div >
26
+ < div class ="cell border-box-sizing code_cell rendered ">
27
+ < div class ="input ">
28
+ < div class ="prompt input_prompt "> In [2]:</ div >
29
+ < div class ="inner_cell ">
30
+ < div class ="input_area ">
31
+ < div class =" highlight hl-ipython2 "> < pre > < span class ="kn "> import</ span > < span class ="nn "> plotly.plotly</ span > < span class ="kn "> as</ span > < span class ="nn "> py</ span >
32
+ < span class ="kn "> import</ span > < span class ="nn "> plotly.graph_objs</ span > < span class ="kn "> as</ span > < span class ="nn "> go</ span >
33
+
34
+ < span class ="kn "> import</ span > < span class ="nn "> pandas</ span > < span class ="kn "> as</ span > < span class ="nn "> pd</ span >
35
+
36
+ < span class ="c "> # Read data from a csv</ span >
37
+ < span class ="n "> z_data</ span > < span class ="o "> =</ span > < span class ="n "> pd</ span > < span class ="o "> .</ span > < span class ="n "> read_csv</ span > < span class ="p "> (</ span > < span class ="s "> 'https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv'</ span > < span class ="p "> )</ span >
38
+
39
+ < span class ="n "> data</ span > < span class ="o "> =</ span > < span class ="p "> [</ span >
40
+ < span class ="n "> go</ span > < span class ="o "> .</ span > < span class ="n "> Surface</ span > < span class ="p "> (</ span >
41
+ < span class ="n "> z</ span > < span class ="o "> =</ span > < span class ="n "> z_data</ span > < span class ="o "> .</ span > < span class ="n "> as_matrix</ span > < span class ="p "> ()</ span >
42
+ < span class ="p "> )</ span >
43
+ < span class ="p "> ]</ span >
44
+ < 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 >
45
+ < span class ="n "> title</ span > < span class ="o "> =</ span > < span class ="s "> 'Mt Bruno Elevation'</ span > < span class ="p "> ,</ span >
46
+ < span class ="n "> autosize</ span > < span class ="o "> =</ span > < span class ="bp "> False</ span > < span class ="p "> ,</ span >
47
+ < span class ="n "> width</ span > < span class ="o "> =</ span > < span class ="mi "> 500</ span > < span class ="p "> ,</ span >
48
+ < span class ="n "> height</ span > < span class ="o "> =</ span > < span class ="mi "> 500</ span > < span class ="p "> ,</ span >
49
+ < span class ="n "> margin</ span > < span class ="o "> =</ span > < span class ="nb "> dict</ span > < span class ="p "> (</ span >
50
+ < span class ="n "> l</ span > < span class ="o "> =</ span > < span class ="mi "> 65</ span > < span class ="p "> ,</ span >
51
+ < span class ="n "> r</ span > < span class ="o "> =</ span > < span class ="mi "> 50</ span > < span class ="p "> ,</ span >
52
+ < span class ="n "> b</ span > < span class ="o "> =</ span > < span class ="mi "> 65</ span > < span class ="p "> ,</ span >
53
+ < span class ="n "> t</ span > < span class ="o "> =</ span > < span class ="mi "> 90</ span >
54
+ < span class ="p "> )</ span >
55
+ < span class ="p "> )</ span >
56
+ < 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 >
57
+ < 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 ="s "> 'elevations-3d-surface'</ span > < span class ="p "> )</ span >
58
+ </ pre > </ div >
59
+
60
+ </ div >
61
+ </ div >
62
+ </ div >
63
+
64
+ < div class ="output_wrapper ">
65
+ < div class ="output ">
66
+
67
+
68
+ < div class ="output_area "> < div class ="prompt output_prompt "> Out[2]:</ div >
69
+
70
+ < div class ="output_html rendered_html output_subarea output_execute_result ">
71
+ < iframe id ="igraph " scrolling ="no " style ="border:none; " seamless ="seamless " src ="https://plot.ly/~demo_account/104.embed " height ="500px " width ="500px "> </ iframe >
72
+ </ div >
73
+
74
+ </ div >
75
+
76
+ </ div >
77
+ </ div >
78
+
79
+ </ div >
80
+ < div class ="cell border-box-sizing text_cell rendered ">
81
+ < div class ="prompt input_prompt ">
82
+ </ div >
83
+ < div class ="inner_cell ">
84
+ < div class ="text_cell_render border-box-sizing rendered_html ">
85
+ < h4 id ="Multiple-3D-Surface-Plots "> Multiple 3D Surface Plots< a class ="anchor-link " href ="#Multiple-3D-Surface-Plots "> ¶</ a > </ h4 >
86
+ </ div >
87
+ </ div >
88
+ </ div >
89
+ < div class ="cell border-box-sizing code_cell rendered ">
90
+ < div class ="input ">
91
+ < div class ="prompt input_prompt "> In [3]:</ div >
92
+ < div class ="inner_cell ">
93
+ < div class ="input_area ">
94
+ < div class =" highlight hl-ipython2 "> < pre > < span class ="kn "> import</ span > < span class ="nn "> plotly.plotly</ span > < span class ="kn "> as</ span > < span class ="nn "> py</ span >
95
+ < span class ="kn "> from</ span > < span class ="nn "> plotly.graph_objs</ span > < span class ="kn "> import</ span > < span class ="n "> Surface</ span >
96
+
97
+ < span class ="n "> z1</ span > < span class ="o "> =</ span > < span class ="p "> [</ span >
98
+ < span class ="p "> [</ span > < span class ="mf "> 8.83</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.89</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.81</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.87</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.9</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.87</ span > < span class ="p "> ],</ span >
99
+ < span class ="p "> [</ span > < span class ="mf "> 8.89</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.94</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.85</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.94</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.96</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ],</ span >
100
+ < span class ="p "> [</ span > < span class ="mf "> 8.84</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.9</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.82</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.93</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.91</ span > < span class ="p "> ],</ span >
101
+ < span class ="p "> [</ span > < span class ="mf "> 8.79</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.85</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.79</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.9</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.94</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ],</ span >
102
+ < span class ="p "> [</ span > < span class ="mf "> 8.79</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.88</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.81</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.9</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.95</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ],</ span >
103
+ < span class ="p "> [</ span > < span class ="mf "> 8.8</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.82</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.78</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.91</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.94</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ],</ span >
104
+ < span class ="p "> [</ span > < span class ="mf "> 8.75</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.78</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.77</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.91</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.95</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ],</ span >
105
+ < span class ="p "> [</ span > < span class ="mf "> 8.8</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.8</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.77</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.91</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.95</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.94</ span > < span class ="p "> ],</ span >
106
+ < span class ="p "> [</ span > < span class ="mf "> 8.74</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.81</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.76</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.93</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.98</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.99</ span > < span class ="p "> ],</ span >
107
+ < span class ="p "> [</ span > < span class ="mf "> 8.89</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.99</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.92</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.1</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.13</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.11</ span > < span class ="p "> ],</ span >
108
+ < span class ="p "> [</ span > < span class ="mf "> 8.97</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.97</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.91</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.09</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.11</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.11</ span > < span class ="p "> ],</ span >
109
+ < span class ="p "> [</ span > < span class ="mf "> 9.04</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.08</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.05</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.25</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.28</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.27</ span > < span class ="p "> ],</ span >
110
+ < span class ="p "> [</ span > < span class ="mi "> 9</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.01</ span > < span class ="p "> ,</ span > < span class ="mi "> 9</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.2</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.23</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.2</ span > < span class ="p "> ],</ span >
111
+ < span class ="p "> [</ span > < span class ="mf "> 8.99</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.99</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.98</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.18</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.2</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.19</ span > < span class ="p "> ],</ span >
112
+ < span class ="p "> [</ span > < span class ="mf "> 8.93</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.97</ span > < span class ="p "> ,</ span > < span class ="mf "> 8.97</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.18</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.2</ span > < span class ="p "> ,</ span > < span class ="mf "> 9.18</ span > < span class ="p "> ]</ span >
113
+ < span class ="p "> ]</ span >
114
+
115
+ < span class ="n "> z2</ span > < span class ="o "> =</ span > < span class ="p "> [[</ span > < span class ="n "> zij</ span > < span class ="o "> +</ span > < span class ="mi "> 1</ span > < span class ="k "> for</ span > < span class ="n "> zij</ span > < span class ="ow "> in</ span > < span class ="n "> zi</ span > < span class ="p "> ]</ span > < span class ="k "> for</ span > < span class ="n "> zi</ span > < span class ="ow "> in</ span > < span class ="n "> z1</ span > < span class ="p "> ]</ span >
116
+ < span class ="n "> z3</ span > < span class ="o "> =</ span > < span class ="p "> [[</ span > < span class ="n "> zij</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="k "> for</ span > < span class ="n "> zij</ span > < span class ="ow "> in</ span > < span class ="n "> zi</ span > < span class ="p "> ]</ span > < span class ="k "> for</ span > < span class ="n "> zi</ span > < span class ="ow "> in</ span > < span class ="n "> z1</ span > < span class ="p "> ]</ span >
117
+
118
+ < span class ="n "> py</ span > < span class ="o "> .</ span > < span class ="n "> iplot</ span > < span class ="p "> ([</ span >
119
+ < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> z</ span > < span class ="o "> =</ span > < span class ="n "> z1</ span > < span class ="p "> ,</ span > < span class ="nb "> type</ span > < span class ="o "> =</ span > < span class ="s "> 'surface'</ span > < span class ="p "> ),</ span >
120
+ < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> z</ span > < span class ="o "> =</ span > < span class ="n "> z2</ span > < span class ="p "> ,</ span > < span class ="n "> showscale</ span > < span class ="o "> =</ span > < span class ="bp "> False</ span > < span class ="p "> ,</ span > < span class ="n "> opacity</ span > < span class ="o "> =</ span > < span class ="mf "> 0.9</ span > < span class ="p "> ,</ span > < span class ="nb "> type</ span > < span class ="o "> =</ span > < span class ="s "> 'surface'</ span > < span class ="p "> ),</ span >
121
+ < span class ="nb "> dict</ span > < span class ="p "> (</ span > < span class ="n "> z</ span > < span class ="o "> =</ span > < span class ="n "> z3</ span > < span class ="p "> ,</ span > < span class ="n "> showscale</ span > < span class ="o "> =</ span > < span class ="bp "> False</ span > < span class ="p "> ,</ span > < span class ="n "> opacity</ span > < span class ="o "> =</ span > < span class ="mf "> 0.9</ span > < span class ="p "> ,</ span > < span class ="nb "> type</ span > < span class ="o "> =</ span > < span class ="s "> 'surface'</ span > < span class ="p "> )],</ span >
122
+ < span class ="n "> filename</ span > < span class ="o "> =</ span > < span class ="s "> 'python-docs/multiple-surfaces'</ span > < span class ="p "> )</ span >
123
+ </ pre > </ div >
124
+
125
+ </ div >
126
+ </ div >
127
+ </ div >
128
+
129
+ < div class ="output_wrapper ">
130
+ < div class ="output ">
131
+
132
+
133
+ < div class ="output_area "> < div class ="prompt output_prompt "> Out[3]:</ div >
134
+
135
+ < div class ="output_html rendered_html output_subarea output_execute_result ">
136
+ < iframe id ="igraph " scrolling ="no " style ="border:none; " seamless ="seamless " src ="https://plot.ly/~demo_account/107.embed " height ="525px " width ="100% "> </ iframe >
137
+ </ div >
138
+
139
+ </ div >
140
+
141
+ </ div >
142
+ </ div >
143
+
144
+ </ div >
145
+ < div class ="cell border-box-sizing text_cell rendered ">
146
+ < div class ="prompt input_prompt ">
147
+ </ div >
148
+ < div class ="inner_cell ">
149
+ < div class ="text_cell_render border-box-sizing rendered_html ">
150
+ < h4 id ="Reference "> Reference< a class ="anchor-link " href ="#Reference "> ¶</ a > </ h4 >
151
+ </ div >
152
+ </ div >
153
+ </ div >
154
+ < div class ="cell border-box-sizing text_cell rendered ">
155
+ < div class ="prompt input_prompt ">
156
+ </ div >
157
+ < div class ="inner_cell ">
158
+ < div class ="text_cell_render border-box-sizing rendered_html ">
159
+ < p > See < a href ="https://plot.ly/python/reference/#surface "> https://plot.ly/python/reference/#surface</ a > for more information!</ p >
160
+
161
+ </ div >
162
+ </ div >
163
+ </ div > {% endraw %}
0 commit comments