标签: scatter-plot

在斑点密集的区域上,alpha 仍然不透明的散点图

我有一个散点图,它从两个不同的数据集中绘制大量的点。在某些区域,存在大量的点,因此即使具有非常低的 alpha(例如 alpha=0.1),您也无法看穿质量。但在该 alpha 值下,您几乎看不到稀疏区域中的点。有没有一种方法可以限制堆叠点的 alpha 值,或者以某种方式使背景在密集区域下可见,同时不洗掉稀疏区域?

代码片段如下所示:

# Code to populate the datasets not included.
fig, ax = plt.subplots()
ax.scatter(x1, y1, s=12, color='red')
ax.scatter(x2, y2, s=12, color='blue', alpha=0.1)
# Plus code to do xlabels and such not included.
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

正如您所看到的,很难看到底部红色腿的边界,但仍然使顶部蓝色腿打出。

有什么办法可以创造出这样的效果吗?

提前致谢。

编辑

一个好的建议似乎是使用 hexbin 而不是 scatter。这看起来确实很有希望,但颜色仍然不能很好地混合。例如,

ax.hexbin(x1, y1, cmap='Reds', mincnt=1, vmax=100)
ax.hexbin(x2, y2, cmap='Blues', mincnt=1, vmax=50, alpha=0.8, linewidths=0)
Run Code Online (Sandbox Code Playgroud)

产量:

在此输入图像描述

如果能让蓝色和红色融合在一起,那就太好了。也许每个像素可以有一个来自一个数据集的 R 值,以及来自另一个数据集的 B 值或其他值?但在 hexbin 中似乎不是一个选项。

编辑

应用托马西洛的答案后:

在此输入图像描述

谢谢,我觉得比原版好看。

python alpha matplotlib scatter-plot

5
推荐指数
1
解决办法
2402
查看次数

Pandas 散点图分类轴和时间序列轴

我正在寻找创建一个非常类似于 nltk 的词汇分散图的图表,但我对如何构建它画了一个空白。我认为分散将是我最好的几何图形,使用“|” 作为标记,并设置 alpha,但我在设置参数时遇到了各种问题。下面是一个例子:

在此输入图像描述

我在 5 年的时间内用日期时间索引 freq='D' 排列了数据框,每列代表该日期使用的特定单词的计数。例如:

tst = pd.DataFrame(index=pd.date_range(datetime.datetime(2010, 1, 1), end=datetime.datetime(2010, 2, 1), freq='D'), data=[[randint(0, 5), randint(0, 1), randint(0, 2)] for x in range(32)])
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试类似以下内容:

plt.figure()
tst.plot(kind='scatter', x=tst.index, y=tst.columns, marker='|', color=sns.xkcd_rgb['dodger blue'], alpha=.05, legend=False)
yticks = plt.yticks()[0]
plt.yticks(yticks, top_words)
Run Code Online (Sandbox Code Playgroud)

上面的代码产生一个KeyError:

KeyError: "['2009-12-31T19:00:00.000000000-0500' '2010-01-01T19:00:00.000000000-0500'\n '2010-01-02T19:00:00.000000000-0500' '2010-01-03T19:00:00.000000000-0500'\n '2010-01-04T19:00:00.000000000-0500' '2010-01-05T19:00:00.000000000-0500'\n '2010-01-06T19:00:00.000000000-0500' '2010-01-07T19:00:00.000000000-0500'\n '2010-01-08T19:00:00.000000000-0500' '2010-01-09T19:00:00.000000000-0500'\n '2010-01-10T19:00:00.000000000-0500' '2010-01-11T19:00:00.000000000-0500'\n '2010-01-12T19:00:00.000000000-0500' '2010-01-13T19:00:00.000000000-0500'\n '2010-01-14T19:00:00.000000000-0500' '2010-01-15T19:00:00.000000000-0500'\n '2010-01-16T19:00:00.000000000-0500' '2010-01-17T19:00:00.000000000-0500'\n '2010-01-18T19:00:00.000000000-0500' '2010-01-19T19:00:00.000000000-0500'\n '2010-01-20T19:00:00.000000000-0500' '2010-01-21T19:00:00.000000000-0500'\n '2010-01-22T19:00:00.000000000-0500' '2010-01-23T19:00:00.000000000-0500'\n '2010-01-24T19:00:00.000000000-0500' '2010-01-25T19:00:00.000000000-0500'\n '2010-01-26T19:00:00.000000000-0500' '2010-01-27T19:00:00.000000000-0500'\n '2010-01-28T19:00:00.000000000-0500' '2010-01-29T19:00:00.000000000-0500'\n '2010-01-30T19:00:00.000000000-0500' '2010-01-31T19:00:00.000000000-0500'] not in …
Run Code Online (Sandbox Code Playgroud)

matplotlib scatter-plot pandas timeserieschart categorical-data

5
推荐指数
1
解决办法
4770
查看次数

在 Matplotlib 中将散点图中的标记尺寸正确调整为半径 R

我有一个限制为 -1 到 1 的图。我知道散点图不会以大小为半径来绘制,而是以大小为点来绘制。

我需要根据每个点的大小(我将其作为半径)正确缩放绘图。通过修改以下代码可以实现这一点吗?

fig, ax = plt.subplots(1)
ax.set_title("Post Synaptic Neurons")
sizes = [x.size * 100 for x in post_synaptic_neurons]
offsets = [(x.origin[0],x.origin[1]) for x in post_synaptic_neurons]
print(sizes)
ax.scatter([x.origin[0] for x in post_synaptic_neurons], [x.origin[1] for x in post_synaptic_neurons], 
  cmap=plt.cm.hsv, s=sizes, alpha=0.5)
ax.set_xlim([-1,1]) 
ax.set_ylim([-1,1])
ax.set_aspect(1)
plt.tight_layout
Run Code Online (Sandbox Code Playgroud)

如果没有,有人可以向我解释为什么 matplotlib 没有在绘图比例上绘制具有特定半径的圆的函数吗?我没想到这会成为一个问题,但我的困难背后一定有充分的理由。

python matplotlib scatter-plot

5
推荐指数
2
解决办法
9881
查看次数

matplotlib 中无效的 rgba arg“#”

我无法弄清楚在尝试在 matplotlib 中创建散点图时如何使用颜色。

我正在尝试绘制具有不同颜色点的多个散点图来显示集群。

colors=['#12efff','#eee111','#eee00f','#e00fff','#123456','#abc222','#000000','#123fff','#1eff1f','#2edf4f','#2eaf9f','#22222f'
        '#eeeff1','#eee112','#00ef00','#aa0000','#0000aa','#000999','#32efff','#23ef68','#2e3f56','#7eef1f','#eeef11']
C=1
fig = plt.figure()
ax = fig.gca(projection='3d')
for fgroups in groups:
   X=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
   y=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
   Z=[np.random.rand(50),np.random.rand(50),np.random.rand(50)]
   C=(C+1) % len(colors)
   ax.scatter(X,Y,Z, s=20, c=colors[C], depthshade=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我收到的错误如下:

ValueError: to_rgba: 无效的 rgba arg "#" to_rgb: 无效的 rgb arg "#" 无法将字符串转换为浮点数: #

看起来它将这些 RGB 参数视为浮点数。

然而,在 matplotlib 文档中,颜色是以这种风格编写的http://matplotlib.org/api/colors_api.html

我缺少什么?

python matplotlib scatter-plot

5
推荐指数
1
解决办法
1万
查看次数

X 轴上带有日期时间的 HighCharts 散点图未正确绘制值

我正在创建一个 highchart 散点图,其中 X 轴上包含纪元日期时间值,Y 轴上包含浮点值。问题是当我使用标签格式化程序将纪元时间值转换为可读时间值(“DD-MMM-YYYY”)时,在 X 轴上创建具有相同标题的多个标签,并且这些点不与垂直对齐X 轴上的刻度线。

我为它创建了一个 JSFiddle (链接)。我可以做什么来解决这个问题...

$(function () {
$('#container').highcharts({
    chart: {
        type: 'scatter',
        zoomType: 'xy'
    },
    title: {
        text: 'Errors'
    },
    subtitle: {
        text: 'Source: Temp Data'
    },
    xAxis: {
                allowDecimals: false,
                title: {
                    text: 'days',
                    scalable: false
                },
                type: 'datetime',
                labels: {
                    formatter: function () {
                            return Highcharts.dateFormat('%d-%b-%y', moment.unix(this.value));



                    }
                },
                tickPixelInterval: 100
            },
    yAxis: {
        title: {
            text: 'Weight (kg)'
        }
    },
    legend: {
        layout: 'vertical',
        align: 'left',
        verticalAlign: …
Run Code Online (Sandbox Code Playgroud)

datetime epoch scatter-plot highcharts

5
推荐指数
1
解决办法
6049
查看次数

Julia - 散点图:如何为每个类定义不同的颜色?

我正在尝试在 Julia 中绘制散点图,我在那里有 3 个课程。
我想为每个类定义不同的颜色。

我试过:

using(PyPlot)
pca = readdlm("pca1_2_fam.txt", header=false);
plot(pca[:,3], pca[:,4], color = pca[:,1])
Run Code Online (Sandbox Code Playgroud)

pca 文件如下:

名称1 208094 -0.00476681 0.00822032
名称1 514876 -0.00531507 -0.00721858
名称2 515043 0.00365503 -0.01794700 名称2
515066 0.00467896 0.00420396名称3
799073 0.00811660 -0.01903420 名称3 GLTGH40
0.00380041 0.00618471

在 R 中,我只是使用以下方法做到了这一点:

colnames(pca)=c("Breed","Animal","PCA1","PCA2")
qplot(PCA1,PCA2,data=pca,color=Breed,geom=c("point")) + theme(legend.position="none")   
Run Code Online (Sandbox Code Playgroud)

我想学习如何在 Julia 中做到这一点。

plot scatter-plot julia

5
推荐指数
1
解决办法
9735
查看次数

散点图标记大小与轴值成正比 - 为什么对于方面=“等于”,x 轴和 y 轴的像素数不同?

据我所知,我的问题与这篇文章密切相关。

我需要绘制一些标记大小与轴值严格成比例的数据。(已经在这里问过这个问题)。

我的方法如下:

  • 创建空散点图作为像素参考
  • 在左下角和右上角散布2个点
  • 将轴限制在这两点上
  • 用于transData.transform获取这两个点的像素值
  • 获取像素距离作为这两点的像素数差
  • (现在我有了距离与像素之比,用 ; 分散我的数据
    s=(size*dist_to_pix_ratio)**2,但这现在并不重要。)

问题是:当我完全按照我所描述的操作时,我得到 y 轴和 x 轴像素数的两个不同值。

这是一个最小的代码:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(7,7))
ax1 = fig.add_subplot(111, aspect='equal')

#setting up an empty scatterplot for pixel reference
xedges=[0.0, 1.0]
yedges=[0.0, 1.0]
emptyscatter=ax1.scatter(xedges, yedges, s=0.0)

#set axes limits
ax1.set_xlim(0.00,1.00)
ax1.set_ylim(0.00,1.00)   


# Calculating the ratio of pixel-to-unit
upright = ax1.transData.transform((1.0,1.0))
lowleft = ax1.transData.transform((0.0,0.0))
x_to_pix_ratio = upright[0] - lowleft[0]
y_to_pix_ratio = upright[1] - lowleft[1]

print x_to_pix_ratio, …
Run Code Online (Sandbox Code Playgroud)

python size matplotlib markers scatter-plot

5
推荐指数
0
解决办法
1565
查看次数

d3更改和更新轴域散点图

我正在 d3 中处理散点图,当我单击按钮时,我需要能够更新 yAxis 域。

这就是我现在所拥有的。这是最低值和最高值。

yAxis = d3.scaleLinear().rangeRound([height, 0]);  
yAxis.domain([23500, 29600]);
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,如何将域更改为类似域([26500, 33600])?

我需要将其添加到具有点击功能的按钮中吗?

d3.select('#data2010').on('click', function () {
Run Code Online (Sandbox Code Playgroud)

或者有没有办法自动寻找最低和最高值并更新它?

axis scatter-plot d3.js

5
推荐指数
1
解决办法
3642
查看次数

如何使用数据集(nd.array)在散点图中对误差条(x 和 y)进行颜色映射?

我正在尝试创建一个带有 x 和 y 误差的散点图,它们在四个部分中具有不同的标记和误差条颜色(例如,x=0 到 x=2 的红色,x=2 到 c=5 的蓝色等)。我使用了带有标记边界的颜色图,但我无法对错误栏做类似的事情。我尝试使用this answer to a similar question将标记、错误栏和大写字母设置为散点颜色图中的相同颜色,但我无法让它为我的代码工作(出现了一个关于数据长度不匹配或无法转换为元组)。我想我无法为我用于标记的颜色图正确修改它,或者这不是获得正确结果的最佳方法。

这是一个包含一些虚构数据的示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors

bounds = [0,1.5,3,4.5,5]
colors = ["r", "b", "g", "y"]
cmap = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(bounds, len(colors))

x = np.array([0.0, 0.0, 1.0, 2.0, 2.0, 3.0,  4.0,  4.0, 5.0, 5.0])
y = np.array([0.0, 0.1, 0.8, 0.9, 0.7, 0.1, -0.8, -0.5, -1.0, -0.7])
x_err = np.array([0.05, 0.06, 0.04, 0.045, 0.04, 0.06, 0.05, 0.055, 0.02, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib scatter-plot color-mapping

5
推荐指数
1
解决办法
108
查看次数

Plotly:创建具有分类 x 轴抖动和多级轴的 Scatter

我想制作一个多级 x 轴的图形,如下图所示: 多层次分散

import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(
  go.Scatter(
    x = [df['x'], df['x1']],
    y = df['y'],
    mode='markers'
  )
)
Run Code Online (Sandbox Code Playgroud)

但我也想将抖动放在 x 轴上,如下图所示: 在此处输入图片说明

到目前为止,我可以使用下一个代码独立制作每个图形:

import plotly.express as px
fig = px.strip(df,
               x=[df["x"], df['x1']], 
               y="y",
               stripmode='overlay') 
Run Code Online (Sandbox Code Playgroud)

是否可以将抖动和多级轴组合在一个图中?

这是重现数据集的代码:

import numpy as np
import pandas as pd
import random

'''Create DataFrame'''
price = np.append(
  np.random.normal(20, 5, size=(1, 50)), np.random.normal(40, 2, size=(1, 10))
)
quantity = np.append(
  np.random.randint(1, 5, size=(50)), np.random.randint(8, 12, size=(10))
)

firstLayerList = ['15 in', '16 in']
secondLayerList …
Run Code Online (Sandbox Code Playgroud)

python graph scatter-plot plotly jitter

5
推荐指数
1
解决办法
1831
查看次数