小编Sch*_*sch的帖子

python matplotlib dash-dot-dot - 怎么样?

我使用python和matplotlib来生成图形输出.
有没有一种简单的方法来生成点划线式?
我知道的'--','-.'':'选项.不幸的是,'-..'不会产生点划线.
我查看了set_dashes命令,但这似乎控制了破折号的长度和两个相邻破折号之间的空间.
一种选择可以是在彼此的顶部绘制两条线; 在破折号之间留有足够空间的一个虚线 - 并且一个虚线,与破折号一样大的点宽且间隔开,使得两个点位于每个破折号之间.我不怀疑这可以做到,我只是希望有一个更简单的方法.
我忽略了一个选择吗?

python matplotlib linestyle

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

随机投影算法伪码

我试图在非常稀疏的数据集上应用随机投影方法.我找到了关于Johnson Lindenstrauss方法的论文和教程,但是每一个方法都充满了方程式,对我没有任何有意义的解释.例如,关于Johnson-Lindenstrauss的这份文件

不幸的是,从这个文档中,我不知道算法的实现步骤.这是一个很长的镜头,但有谁能告诉我简单的英文版本或非常简单的算法伪代码?或者我在哪里可以开始挖掘这个方程式?有什么建议?

例如,通过阅读有关Johnson-Lindenstrauss的论文,我从算法中理解的是:

  1. 假设我们有一个AxB矩阵,其中A是样本B数,是维数,例如100x5000.我想减小它的尺寸500,这将产生一个100x500矩阵.

据我所知:首先,我需要构建一个100x500矩阵并随机填充条目+1-1(概率为50%).

编辑:
好的,我想我开始明白了.因此,我们有一个矩阵Amxn.我们希望减少它Emxk.

我们需要做的是,建立一个矩阵R具有nxk尺寸,并与填充它0,-1或者+1,对于2/3,1/61/6概率.

在构造之后R,我们将简单地进行矩阵乘法AxR以找到我们的简化矩阵E.但我们并不需要做一个完整的矩阵乘法,因为如果一个元素Ri0,我们不需要做计算.简单地跳过它.但是如果我们面对1,我们只需要添加列,或者如果是-1,只需从计算中减去它.所以我们只需使用求和而不是乘法来找到E.这就是使这种方法非常快的原因.

事实证明这是一个非常简洁的算法,虽然我觉得这个想法太愚蠢了.

algorithm machine-learning multidimensional-array

12
推荐指数
1
解决办法
5441
查看次数

MATLAB:绘制双底x轴

我试图在跳转后根据图形绘制双底x轴:

在此输入图像描述

这是一个半小时的semilogx图,其中包含代表分钟,月和年的额外特定刻度.如何创建这些额外的刻度?

matlab label matlab-figure

8
推荐指数
2
解决办法
3488
查看次数

Matplotlib:如何调整轮廓图中色条的线宽?

这是一个生成图表的最小例子,它说明了我的问题:

import matplotlib.pylab as plt
import matplotlib.mpl as mpl
import numpy as np
import random

data = [[random.random() for i in range(10)] for j in range(10)]

[XT, YT] = np.meshgrid(np.arange(1,10+1,1), np.arange(1,10+1,1))

cmap = mpl.cm.gray

fig, ax = plt.subplots()

CS = ax.contour(XT, YT, data,levels=np.arange(0,1+0.1,0.1),\
                cmap=cmap,linewidths=0.75)
CB = plt.colorbar(CS, ticks=np.arange(0,1+0.1,0.1))  

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果图看起来像这样:

gray_contours

我想保留图linewidths中的轮廓线,0.75但增加它们colorbar(为了更好的可读性).

如何linewidthscolorbar不更改图中的情况下更改?

我最初尝试过CB.collections,但colorbar没有collections.此外,colorbar使用参数调用linewidths=4.0不起作用(它是一个未知参数).

评论
在输入这个问题时,我有了这个想法(橡皮鸭调试):

CS = ax.contour(XT, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

7
推荐指数
1
解决办法
5674
查看次数

向 Plotly 散点图添加注释

我在向我的散点图添加注释时遇到问题。我使用 pandas 数据框作为我的数据源,其中包含 Lat、Long 列,文本是索引。我生成的嵌套在布局参数下的注释参数如下所示:

[dict(x= d[1]['Lat'], y= d[1]['Long'], text= d[0]) for d in df.iterrows()]
Run Code Online (Sandbox Code Playgroud)

相反,我可以只使用一行的单个注释(甚至出于测试目的硬编码值)。看起来 x,y 放置是使用图表网格而不是地图网格来放置注释。是否有参数可以解决这个问题,或者我是否需要调整图表网格本身?先感谢您。

编辑:这是一个例子。我希望通过将纬度/经度坐标作为注释的 x,y 变量传递来将注释放在每个气泡旁边。

绘制地图示例

python pandas plotly

6
推荐指数
1
解决办法
3665
查看次数

如何更正“提示或脚本中不允许使用功能定义”

我想为该方程式编写代码:T2(i)=T1(i)+2*[T1(i-1)+T1(i+1)]

syms T1  T2
function [T2] = stat(T1)

for   i=1:3
   T2(i)=T1(i)*2+[T1(i-1,)+T1(i+1,)]*2
end
Run Code Online (Sandbox Code Playgroud)

我想编写代码T2(111)=T1(111)+2*[T1(011)+T(211)],循环继续进行。但是matlab给出了这个错误

“在提示或脚本中不允许使用功能定义”

我怎么解决这个问题?

scripting matlab function

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

如何绘制渐近线?

我跟着一个小教程,让我靠近我想要的地方,但它不是那里,我不知道如何用它做下一步.
这是'我目前的数字:

原版的

我不知道如何将渐近线绘制到此图中.

我想我需要创建一个名为Y垂直线的变量,然后绘制出那条线?我不确定这是否正确

在这种情况下,我如何为渐近线创建线?

编辑

这是我的代码:

import pylab as pl
import numpy as np
import matplotlib.pyplot as plt

"""
This is all from the tutorial located at :
http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html
"""

pl.figure(figsize=(10, 6), dpi=80)
pl.subplot(1, 1, 1)
X = np.linspace(-5, 5, 500, endpoint=True)
C = (1/X**2)-5
P = X - X - 0.1

pl.xlim(X.min() * 1.1, X.max() * 1.1)
pl.ylim(C.min() * 1.1, C.max() * 1.1)

"""
Alters the position of the axis - moves them to the centre …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

为什么iscalar,isvector和ismatrix都适用于A = 1?

Matlab具有以下检查输入的功能:

对于A = 1(或任何"标量"输入)以上所有返回true.
为什么我会看到这种反直觉行为?
我将如何识别A = 1为标量?

scalar matlab vector matrix

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

使用twinx时定义纵横比

如何为使用的绘图设置纵横比twinx


下面,我提供三个例子:

  1. 没有twinx突出我如何设置宽高比
  2. twinx用于说明如何重置先前定义的宽高比
  3. 我试图在使用时定义两个y轴的纵横比twinx(这不起作用)

我正在使用matplotlib 1.3.0
以下脚本说明了我如何设置简单绘图的纵横比:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + 50.0

fig = plt.figure()

ax = fig.add_subplot(111)

XLIM = [50.0, 51.6]
YLIM = [0.0, 1.1, 0.0, 11.0] 

ax.plot(x,np.sin(x-50.0),'b')

ax.set_xlim([XLIM[0], XLIM[1]])
ax.set_ylim([YLIM[0], YLIM[1]])

ax.set_xticks(np.arange(XLIM[0], XLIM[1], 0.2))
ax.set_yticks(np.arange(YLIM[0], YLIM[1]+0.1, 0.1)[:-1])

ax.grid(True,which='major',linestyle='solid')

ax.set_aspect((XLIM[1]-XLIM[0])/(YLIM[1]-YLIM[0]))

plt.show()
Run Code Online (Sandbox Code Playgroud)

这个产生的数字有一个明确的宽高比:

第一个情节

但是,如果我想y使用该twinx()函数添加额外的-axis ,则重置宽高比:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + …
Run Code Online (Sandbox Code Playgroud)

python matplotlib aspect-ratio

4
推荐指数
1
解决办法
1528
查看次数

Matlab,输入参数太多错误?

我刚刚遇到了matlab编程的问题.我想尝试从类中调用一个方法,我的类很简单

classdef Addition
    properties
        a;
        b;
    end

    methods
        function obj = Addition(a, b)
            obj.a = a;
            obj.b = b;
        end

        function add(c, d)
            fprintf(c + d);
        end
    end 
end
Run Code Online (Sandbox Code Playgroud)

我初始化了一个并尝试通过调用add函数

a = Addition(1, 2)  
a.add(2,4)  
Run Code Online (Sandbox Code Playgroud)

但是,matlab给出的错误是:

使用添加/添加时出错
输入参数太多.

有人可以告诉我为什么会发生这种奇怪的事情吗?

matlab

4
推荐指数
1
解决办法
4957
查看次数