plotlyexpress绘制的散点图没有电

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了plotlyexpress绘制的散点图没有电相关的知识,希望对你有一定的参考价值。

plotlyexpress绘制的散点图没有电
与线型图类似的是,散点图也是一个个点集构成的。但不同之处在于,散点图的各点之间不会按照前后关系以线条连接起来。

用plt.plot画散点图

奇怪,代码和前面的例子差不多,为什么这里显示的却是散点图而不是sin曲线呢?原因有二:一是点集比较少,稀疏,才30个;二是没有指定线型。

用plt.scatter画散点图

scatter专门用于绘制散点图,使用方式和plot方法类似,区别在于前者具有更高的灵活性,可以单独控制每个散点与数据匹配,并让每个散点具有不同的属性。

一般使用scatter方法,如下例子就可以了:

plt.scatter(x, y, marker='o')

下面看一个随机不同透明度、颜色和大小的散点例子:

主要参数说明:

x,y:输入数据

s:标记大小,以像素为单位

c:颜色

marker:标记

alpha:透明度

linewidths:线宽

edgecolors :边界颜色

上面的例子可以拓展到Scikit-learn中经典的鸢尾花iris数据来演示。

Iris数据集是常用的分类实验数据集,由Fisher在1936收集整理,是一类多重变量分析的数据集。数据集包含150个数据,分为3类,每类50个数据,每个数据包含4个属性。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
参考技术A 后列数据都是“文本”数据,无法作为散点图的有效数据。

复制数据区域外的任一空单元格,然后选择数据区域,单击鼠标右键,“选择性粘贴”为“运算”“加”,确定后,将数据区域的数据全部变成“数值”,然后选择数据区域,在“插入”选项下的“图表”中,选择“散点图”,即可。
参考技术B plotlyexpress绘制的散点图没有电
首先,你选中了数据表里的数据没有?
其次,如果你选了数据,还是没有绘图的话,那么选中数据后,点击Origin菜单栏上的 Plot ——> Symbol——> Scater
参考技术C plotlyexpress绘制的散点图没有电:p是一个基于浏览器的交互式图表库,建立在开源的javascript图表库plotly.js上,plotly包利用函数plot_ly函数绘制交互图。 参考技术D plotlyexpress绘制的散点图没有电:p是一个基于浏览器的交互式图表库,建立在开源的JavaScript图表库plotly.js上,plotly包利用函数plot_ly函数绘制交互图。

使用 NaN 绘制/创建数据集的散点图

【中文标题】使用 NaN 绘制/创建数据集的散点图【英文标题】:Draw / Create Scatterplots of datasets with NaN 【发布时间】:2013-03-23 04:05:06 【问题描述】:

我想用pylab画一个散点图,但是我的一些数据是NaN,像这样:

a = [1, 2, 3]
b = [1, 2, None]

pylab.scatter(a,b) 不起作用。

有没有什么方法可以在不显示这些NaN 值的情况下绘制真正有价值的点?

【问题讨论】:

删除 ***.com/questions/11620914/… 中描述的 NaN 值是否足够? 【参考方案1】:

如果您使用NaNs,一切都会完美无缺。 None 不是一回事。 NaN 是一个浮点数。

举个例子:

import numpy as np
import matplotlib.pyplot as plt

plt.scatter([1, 2, 3], [1, 2, np.nan])
plt.show()

如果您想处理丢失的数据,请查看 pandas 或 numpy 掩码数组(以及 numpy.genfromtxt 以加载您的数据)。屏蔽数组内置于 numpy 中,但 pandas 是一个非常有用的库,并且具有非常好的缺失值功能。

举个例子:

import matplotlib.pyplot as plt
import pandas

x = pandas.Series([1, 2, 3])
y = pandas.Series([1, 2, None])
plt.scatter(x, y)
plt.show()

pandas 使用NaNs 来表示掩码数据,而掩码数组使用单独的掩码数组。这意味着掩码数组可以潜在地保留原始数据,同时暂时将其标记为“丢失”或“坏”。但是,它们使用更多的内存,并且有一个隐藏的陷阱,可以通过使用NaNs 来表示缺失的数据来避免。

再举一个例子,同时使用掩码数组和NaNs,这次是用线图:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 6 * np.pi, 300)
y = np.cos(x)

y1 = np.ma.masked_where(y > 0.7, y)

y2 = y.copy()
y2[y > 0.7] = np.nan

fig, axes = plt.subplots(nrows=3, sharex=True, sharey=True)
for ax, ydata in zip(axes, [y, y1, y2]):
    ax.plot(x, ydata)
    ax.axhline(0.7, color='red')

axes[0].set_title('Original')
axes[1].set_title('Masked Arrays')
axes[2].set_title("Using NaN's")

fig.tight_layout()

plt.show()

【讨论】:

这就是我要找的。谢谢! 如果您使用 NaN 和符号学,事情将无法完美运行...情节看起来不错,但会引发以下警告:RuntimeWarning: invalid value seen in less_equal mask = a 【参考方案2】:

因为您是在 2D 空间中绘制的,所以您的点需要同时由 X 和 Y 值定义。如果其中一个值为 None,则该点不能存在于 2D 空间中,因此无法绘制,因此您应该从另一个列表中删除 None 及其对应的值。

有很多方法可以做到这一点。这是一个:

a = [1, 2, 3]
b = [1, None, 2]

i = 0
while i < len(a):
    if a[i] == None or b[i] == None:
        a = a[:i] + a[i+1:]
        b = b[:i] + b[i+1:]
    else:
        i += 1

"""Now a = [1, 3] and b = [1, 2]"""

pylab.scatter(a,b)

【讨论】:

小心if not a[i]...。如果任一数组有零,您将删除它们。零是一个完全有效的值!

以上是关于plotlyexpress绘制的散点图没有电的主要内容,如果未能解决你的问题,请参考以下文章

Pandas / Pyplot中的散点图:如何按类别绘制[重复]

使用 NaN 绘制/创建数据集的散点图

2018-10-31用R绘制散点图矩阵(成对的散点图)

根据 Seaborn 中的散点图绘制热图

如何使用 plotly 绘制特定行的散点图

R语言ggplot2可视化散点图实战:绘制基础散点图为所有散点添加标签只为大于阈值的散点添加标签