小编use*_*638的帖子

条形图中恼人的白色空间(matplotlib,Python)

这可能是一个微不足道的问题,但我试图用matplotlib和x轴上的旋转文本绘制条形图.我正在使用的代码如下所示:

fig = plt.figure()

x_labels_list = []

for i in range(0, pow(2, N)):
    x_labels_list.append(str(f(i)))  # The function f() converts i to a binary string

ax = plt.subplot(111)
width = 1.0
bins = map(lambda x: x-width, range(1,pow(2,N)+1))
ax.bar(bins, my_data, width=width)
ax.set_xticks(map(lambda x: x-width/2, range(1,pow(2,N)+1)))
ax.set_xticklabels(x_labels_list, rotation=90, rotation_mode="anchor", ha="right")
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是我在x轴的右边获得了一个恼人的空白区域,如下图中的红色椭圆所示:

在此输入图像描述

你知道我怎么能把它删除吗?提前致谢!

python matplotlib bar-chart

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

我怎样才能加快这两行代码的速度?

我需要加快以下代码:

for i in range(0, 2**N):

    output[i] = f(np.array(map(int, bin(i)[2:].zfill(N))))
Run Code Online (Sandbox Code Playgroud)

N周围30,因此代码非常慢(我的笔记本电脑需要大约33个小时).函数的参数f()是索引的二进制表示i,并且f()可以是任意可向量化的函数.我不是专家,但为了加速代码,我想要摆脱for循环,这意味着我需要对参数进行矢量化f().换句话说,我要创建与数字从二进制表示的矩阵02**N.这可以通过以下代码实现:

list(itertools.product([0, 1], repeat=N))
Run Code Online (Sandbox Code Playgroud)

我在这个链接上找到了.然而,在我看来,这itertools是非常缓慢的,显然它需要大量的记忆,因为2**30大约十亿.

你有什么建议让这段代码更快吗?提前致谢.

python performance loops

8
推荐指数
1
解决办法
793
查看次数

使用python igraph标记图形中的边缘

我有一个有向图的邻接矩阵(即权重集合),我想在最终图中的边上添加标签(对应于权重的值).换句话说,我想获得像这样.我正在使用python igraph,我的代码如下:

import numpy as np
import igraph as ig


N = 6

adj_matr = np.random.random((N, N))

g = ig.Graph.Weighted_Adjacency(adj_matr.tolist(), mode=ig.ADJ_DIRECTED, attr="weight", loops=True)

ig.plot(g, "My_Graph.svg", vertex_label=map(str, np.arange(N)))
Run Code Online (Sandbox Code Playgroud)

我已经弄清楚如何在节点上设置标签,但我找不到任何关于边缘的具体内容(edge_label=...在plot命令中添加不起作用).你知道如何解决这个问题吗?在此先感谢您的帮助!

python igraph

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

改变颜色隐含的情节

我有以下代码:

import sympy as syp


x, y = syp.symbols('x, y')


Equation_1 = - 2*x + y**2 - 5
Equation_2 = x**3 + syp.sin(y) - 10


syp.plot_implicit(syp.Or(syp.Eq(Equation_1, 0), syp.Eq(Equation_2, 0)), (x, -50, 50), (y, -50, 50))
Run Code Online (Sandbox Code Playgroud)

提供这张图片:

在此输入图像描述

你知道任何可以用来改变第二条曲线颜色的黑客吗?根据Sympy的文档,我认为这不可能直接实现.

python plot sympy

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

查找给定图(Python)的所有完整子图的有效方法?

是否有一种有效的方法可以使用networkx查找给定(无向)图的所有完全连接的组件(即完整的子图)?例如,我有以下邻接矩阵(没有自循环):

    |0 1 1 0 0|
    |1 0 1 0 0|
G = |1 1 0 1 0|
    |0 0 1 0 1|
    |0 0 0 1 0|
Run Code Online (Sandbox Code Playgroud)

对应下图在此输入图像描述 该代码应返回以下节点元组:

(0,1), (1,2), (0,2), (3,4), (2,3), (0,1,2)
Run Code Online (Sandbox Code Playgroud)

我知道 networkx 有查找循环、强连接组件等的例程,但我找不到任何有关全连接组件的信息。如果 Networkx 无法实现,那么 Numpy + Scipy 也可以。提前谢谢了!

编辑

这就是我所做的:

import networkx as nx
import itertools


def findsubsets(S, m):
    return set(itertools.combinations(S, m))



A = np.array([[0, 1, 1, 0, 0],
              [1, 0, 1, 0, 0],
              [1, 1, 0, 1, 0],
              [0, 0, …
Run Code Online (Sandbox Code Playgroud)

python graph networkx

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

在同一图表中绘制2个或更多功能

我想用下面的代码在同一图中绘制2条曲线:

import sympy as syp


x, y = syp.symbols('x, y')

my_function = syp.exp(-(x-2)**2)*syp.exp(-(y-3)**2) + 2*syp.exp(-(x+1)**2)*syp.exp(-(y-1)**2) 

gradient_1 = syp.diff(my_function, x)
gradient_2 = syp.diff(my_function, y)


curve_1 = syp.plot_implicit(syp.Eq(gradient_1, 0))
curve_2 = syp.plot_implicit(syp.Eq(gradient_2, 0))
Run Code Online (Sandbox Code Playgroud)

我所看到的只是第一个情节,而我想让两条曲线在同一张图片中,如果可能的话也可以使用网格.有任何想法吗?

注意:使用matplotlib非常简单,但我找不到该函数的任何具体示例 syp.plot_implicit

python plot sympy

4
推荐指数
2
解决办法
4831
查看次数

Python的电源运算符**的错误?

从以下代码:

import numpy as np

print 2**np.array([32, 33])
Run Code Online (Sandbox Code Playgroud)

我得到负数[-2147483648 -2147483648].我正在使用python 2.6.这是某种bug吗?相反,print 2**32给出了正确的答案4294967296.

python numpy

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

标签 统计

python ×7

plot ×2

sympy ×2

bar-chart ×1

graph ×1

igraph ×1

loops ×1

matplotlib ×1

networkx ×1

numpy ×1

performance ×1