Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何绘出点的栅格?_Python_Matplotlib_Grid_Plotly_Points - Fatal编程技术网

Python 如何绘出点的栅格?

Python 如何绘出点的栅格?,python,matplotlib,grid,plotly,points,Python,Matplotlib,Grid,Plotly,Points,我对编程有点陌生,我正在尝试使用Python(Jupyter笔记本)创建一个简单的绘图,使用Plotly,它在网格配置中有一堆点。在这个例子中,我只是制作一个5 x 5的点网格。我可以用Matplotlib成功地完成它,但不能用Plotly。我如何才能像Matplotlib一样使用Plotly生成点栅格?使用Plotly时,它不会显示所有点。我想使用Plotly,因为它更具交互性,我正在另外做一些工作,我试图在Plotly仪表板中放置这样一个简单的点网格图。这是我现在的代码。我非常感谢你的帮助。

我对编程有点陌生,我正在尝试使用Python(Jupyter笔记本)创建一个简单的绘图,使用Plotly,它在网格配置中有一堆点。在这个例子中,我只是制作一个5 x 5的点网格。我可以用Matplotlib成功地完成它,但不能用Plotly。我如何才能像Matplotlib一样使用Plotly生成点栅格?使用Plotly时,它不会显示所有点。我想使用Plotly,因为它更具交互性,我正在另外做一些工作,我试图在Plotly仪表板中放置这样一个简单的点网格图。这是我现在的代码。我非常感谢你的帮助。谢谢

# Import libraries
import numpy as np
import plotly.graph_objs as go
import matplotlib.pyplot as plt
%matplotlib inline

# Set up sample data
posX = [0, 1, 2, 3, 4]
posY = [-2, -1, 0, 1, 2]
posXX, posYY = np.meshgrid(posX, posY)

# Use Matplotlib
f, ax = plt.subplots()
ax.plot(posXX, posYY, 'o', ms=5)
ax.set_xlabel('X Position')
ax.set_ylabel('Y Position')
ax.set_title('Point Grid');

# Now use Plotly
fig = go.Figure()
fig.add_trace(go.Scatter(x = posXX, y = posYY, mode = 'markers'))
fig.update_layout(title = 'Point Grid',
                  xaxis_title = 'X Position',
                  yaxis_title = 'Y Position',
                  hovermode = 'x')


以下示例代码可用于在Plotly中创建栅格:

示例代码: 输出:

评论: 我在这里特意使用了较低级别的Plotly代码,因为(个人)我觉得它提供了关于
graph\u对象表面下发生的事情的更高级别的透明度,并且提供了更简单的配置


关于您遇到的问题,这是因为绘图处理
meshgrid
布局与
matplotlib
稍有不同。因此,我使用了一个非常简单的for循环和
zip()
函数来保存现有的数据集。

您的代码可以运行并生成绘图。确保您的笔记本是用经典笔记本打开的(不是Jupyter lab)。感谢您的回复。是的,我可以制作情节,但用Plotly制作的不是我所期望的。我需要它来显示点的网格,就像Matplotlib绘图一样,但它只显示一行点。谢谢,这很好。我认为for循环和zip函数是关键…我采用了您所做的,并在我的原始代码中使用了它,它工作了…就像这样。。。。对于zip中的x,y(posXX,posYY):图添加_跟踪(go.Scatter(x=x,y=y,mode='markers'))
from plotly.offline import iplot

colours = ['blue', 'orange', 'green', 'red', 'purple']

layout = {'title': 'Point Grid'}
traces = []

for x, y, c in zip(posXX.T, posYY.T, colours):
    traces.append({'x': x,
                   'y': y,
                   'mode': 'markers',
                   'marker': {'color': c,
                              'size': 10},
                   'name': c})

layout['xaxis'] = {'title': 'X Position'}
layout['yaxis'] = {'title': 'Y Position'}

iplot({'data': traces, 'layout': layout})