小编Sal*_*Egg的帖子

如何仅移动刻度标签(不移动相应的刻度线)?

我正在使用matplotlib生成图表,我使用set_ticksset_ticklabels标记x轴上的几个重要值.但是这些标签中的一些太靠近并且重叠.但我不知道如何在不移动刻度的情况下移动这些标签.

这是一个例子:

重叠的刻度标签

我尝试了几个技巧但失败了,我还没有在互联网上找到这个问题的答案.任何帮助,谢谢.


更新:

源代码:

fig = mpl.figure( figsize=(3, 3) )              # force figsize here to reproduce the problem.
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

我尝试了几个技巧,最好的一个是:

fig = mpl.figure( figsize=(3, 3) )
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.set_xticklabels([0.0, "", "", 1.0, 1.5])
ax.set_xticks([0.35], minor=True)
ax.set_xticklabels(["0.3 0.4"], minor=True)
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在x = 0.35处有一个小问题,我不知道如何删除它.


更新2:

好的,我找到了自己删除小蜱的方法: …

matplotlib

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

为什么没有`unquote`Lisp原语?

最近,我一直在思考Lisp的基础; 我在互联网上阅读了几本手册和/或其他材料,包括P. Graham 的Lisp of Roz:

Lisp的根中,quote被描述为将代码更改为数据的原语,从而引用它,但似乎没有等效的反向原语,即unquote原语.我认为它可能eval是业务,但eval经常在空词法环境中运行数据,这不等于将数据更改回代码.

Ergo,为什么不存在unquoteLisp原语?

lisp eval quote

9
推荐指数
1
解决办法
4195
查看次数

Lua表的一个有趣现象

我是Lua的新手,这些天我正在学习桌子的用法.从教程中我知道Lua对数字索引项和非数字索引项的处理方式不同,所以我自己做了一些测试,今天我发现了一个有趣的现象,我无法解释它:

代码

t = {1, 2, 3, a='a', b='b'}
print(#t)
Run Code Online (Sandbox Code Playgroud)

得到

3
Run Code Online (Sandbox Code Playgroud)

因为#运算符仅计算数字索引项.然后我测试了以下代码

t = {1, 2, 3, a='a', b='b'}
print(#t)

for i = 100,200 do
    t[i] = i
end
print(#t)
Run Code Online (Sandbox Code Playgroud)

我明白了

3
3
Run Code Online (Sandbox Code Playgroud)

直到现在我认为Lua将稍后添加的不连续项目视为非数字索引项目.但是,在我更改代码之后

t = {1, 2, 3, a='a', b='b'}
print(#t)

for i = 100,300 do
    t[i] = i
end
print(#t)
Run Code Online (Sandbox Code Playgroud)

我明白了

3
300
Run Code Online (Sandbox Code Playgroud)

我对这种现象感到困惑,有谁知道原因?谢谢.

(这种现象可以在http://www.lua.org/cgi-bin/demo上复制)

更新:

我试过这段代码

t = {1, 2, 3, a='a', b='b'}
print(#t)

for i = 100,300 do
    t[i] = i …
Run Code Online (Sandbox Code Playgroud)

lua lua-table

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

有没有工具将Lisp代码翻译成Python?

因为我想使用Lisp的语法和Python的库.

也许像Parenscript这样的工具可以生成Python代码而不是Javascript.

lisp python code-translation

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

Common Lisp:`load` 会做`compile-file` 的事情吗?

假设我有一个名为“includes.cl”的文件,其中有几个函数定义。现在我有两种使用这些功能的方法:

  1. (load "includes.cl")
  2. (load (compile-file "includes.cl"))

后者比前者快吗?我只关心函数调用的运行速度。

load compilation common-lisp

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

在Common Lisp中,如何定义一个扩展为空的宏(而不是`nil`)?

我想定义一个可以对s表达式进行注释的宏,例如:

我希望

(list 1 2 (comment-macro (something))) -> (1 2)
Run Code Online (Sandbox Code Playgroud)

但是,如果我像这样定义宏

(defmacro comment-macro (x))
Run Code Online (Sandbox Code Playgroud)

实际上,上述形式的结果

(1 2 nil)
Run Code Online (Sandbox Code Playgroud)

macros common-lisp

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

如何优化这条Racket代码?

我想计算1 + 1/2 + 1/3 + ... + 1/100000000的总和(使用双浮点数).

使用SBCL,此代码的运行速度与C中一样快:

(loop for i fixnum from 1 to 100000000 sum (/ 1.0d0 i) double-float)
Run Code Online (Sandbox Code Playgroud)

如何在Typed Racket中优化此代码?我试过了

#lang typed/racket

(define: (test) : Float
         (for/fold: : Float
                    ([s : Float 0.0])
                    ([i : Fixnum (in-range 1 100000001)])
                    (+ s (/ 1.0 i))))

(time (test))
Run Code Online (Sandbox Code Playgroud)

此代码仅比无类型代码快一点.我可以走得更远吗?

optimization sbcl racket typed-racket

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

如何在Haskell中递归定义无限的二维数组?

我是Haskell的新手,我喜欢它优雅的语法.但我还没有找到一种合适的方法来定义无限的2D数组 - 例如,Pascal三角形:

1  1  1  1  1  ...
1  2  3  4  5  ...
1  3  6 10 15  ...
1  4 10 20 35  ...
1  5 15 35 70  ...
...
Run Code Online (Sandbox Code Playgroud)

我知道如何定义一个简单的函数:

pascal :: Int -> Int -> Int
pascal 1 _ = 1
pascal _ 1 = 1
pascal x y = (pascal (x - 1) y) + (pascal x (y - 1))
Run Code Online (Sandbox Code Playgroud)

由于Haskell不记忆函数值,因此调用pascal 20 20花费很长时间.我怎么能定义一个快速版本(如无限的2D数组)?

haskell

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

Python中的泛型列表是否有类似"join"的函数?

在Python中,字符串列表可以通过连接在一起

','.join(['ab', 'c', 'def'])
Run Code Online (Sandbox Code Playgroud)

但是我怎么能轻易加入一个数字列表或其他一些东西呢?像这样:

0.join([1, 2, 3])  --->  [1, 0, 2, 0, 3]
Run Code Online (Sandbox Code Playgroud)

现在我必须这样做:

sum([[x, 0] for x in [1, 2, 3]], [])[:-1]
Run Code Online (Sandbox Code Playgroud)

python

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

C ++ enable_if是否可以使用默认实现?

我想编写一个函数print,其功能根据其参数的类型而有所不同。

这是我的实现:

template <typename T, typename std::enable_if<std::is_array<T>::value, int>::type = 0>
void print(const T &v) {
  std::cout << "array: ";
  for (const auto &e : v) {
    std::cout << e << ", ";
  }
  std::cout << std::endl;
}

template <typename T, typename std::enable_if<std::is_integral<T>::value, int>::type = 0>
void print(const T &v) {
  std::cout << "integral: " << v << std::endl;
}

template <typename T, typename std::enable_if<!(std::is_array<T>::value || std::is_integral<T>::value), int>::type = 0>
void print(const T &v) {
  std::cout << "default: " …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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