小编jml*_*jml的帖子

使用对数刻度时,如何在ggplot2中设置轴范围?

我有一个时间序列的数据,其中测量是1e6和1e8之间的所有整数:每月网站点击量.我想使用ggplot2用点和线来绘制这些图表,但是将测量值映射到对数刻度.像这样的东西:

qplot(month, hits, data=hits.per.month, log="y")
Run Code Online (Sandbox Code Playgroud)

当我这样做时,ggplot似乎将比例从1e6设置为1e8.我希望它从0到1e8.这样做的自然方式似乎对输出没有影响:

qplot(month, hits, data=hits.per.month, log="y", ylim=c(0, 100000000))
Run Code Online (Sandbox Code Playgroud)

我可以通过在达到qplot之前转换命中来获得我想要的图片,但这会更改轴上的标签:

qplot(month, log10(hits), data=hits.per.month, log="y", ylim=c(0, 8))
Run Code Online (Sandbox Code Playgroud)

我也试过各种组合scale_y_log10,但没有运气.

那么,在ggplot2中使用对数刻度时,如何设置Y轴范围?

r ggplot2

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

如何让GHC警告do块中不完整的模式绑定?

以下Haskell程序被破坏,因为它执行了不完整的模式绑定:

main = do
  [x] <- pure ["foo", "bar"]
  print x
Run Code Online (Sandbox Code Playgroud)

如果你编译它,你将得到没有警告:

$ ghc -fwarn-incomplete-uni-patterns -o example example.hs
[1 of 1] Compiling Main             ( example.hs, example.o )
Linking example ...
Run Code Online (Sandbox Code Playgroud)

但如果你运行它你会得到:

example: user error (Pattern match failure in do expression at example.hs:2:3-5)
Run Code Online (Sandbox Code Playgroud)

我想以某种方式获得编译器警告.

从文档中,我本以为-fwarn-incomplete-uni-patterns会这样做,因为该do块去了:

desugared = pure ["foo", "bar"] >>= \[x] -> print x
Run Code Online (Sandbox Code Playgroud)

事实上,将其添加到示例文件确实会产生警告:

$ ghc -fwarn-incomplete-uni-patterns -o example example.hs
[1 of 1] Compiling Main             ( example.hs, example.o )

example.hs:1:37: Warning:
    Pattern match(es) are non-exhaustive …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

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

Haskell中提升和未提升的产品类型是什么?

我最近最近遇到了"提升产品类型"一词,与未提升产品类型形成鲜明对比.

我不记得上下文,但我发现Stack Overflow还有其他问题,询问未提升产品类型的缺点(例子).

我或多或少知道什么是产品类型.它类似于(a, b)Foo a b c大致对应于集合论中的笛卡尔积.

在这种情况下,"解除"和"解除"这两个词的含义是什么?

haskell types

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

如何在IsString实例中获得文字的编译时验证?

我希望能够IsString使用GHC OverloadedStrings扩展来创建实例,以便我的实例拒绝某些文字是无效的,并且这样拒绝在编译时发生,因此编程错误不会使它成为我给用户的代码.

我有几个用例,我的Name类型只允许某些字符串.例如

module Name (Name(getName), makeName) where

import Data.Text (Text)
import qualified Data.Text as Text

-- | A guaranteed non-empty name.
newtype Name = Name { getName :: Text } deriving (Eq, Show, Ord)

makeName :: Text -> Maybe Name
makeName name
  | Text.null name = Nothing
  | otherwise = Just name
Run Code Online (Sandbox Code Playgroud)

在一个真实的用例中,我会检查有效字符,而不是以数字开头,这类事情.

我们的想法是不导出Name构造函数,这意味着使用Name值的任何人都可以信任它具有某些属性(在这种情况下,非空).

我的问题是我想在很多地方使用文字名称.例如

programName :: Name
programName = fromJust $ makeName "the-great-and-powerful-turtle"
Run Code Online (Sandbox Code Playgroud)

因为我做了很多,所以我定义了一个unsafeMakeName帮助器,它做了几乎相同的事情:

unsafeMakeName :: Text …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

11
推荐指数
1
解决办法
254
查看次数

如何使用Stack在OS X上创建静态可执行文件?

我想为Darwin创建一个静态可执行文件,用于一个我编写的名为difftodo的小型实用程序。difftodo间接取决于pcre,我希望人们能够下载二进制文件并运行它而不必先执行brew install pcre

如果我不使用选项进行编译,则会得到一个可动态链接pcre的二进制文件:

$ otool -L /Users/jml/src/difftodo/.stack-work/install/x86_64-osx/lts-7.1/8.0.1/bin/git-todo
/Users/jml/src/difftodo/.stack-work/install/x86_64-osx/lts-7.1/8.0.1/bin/git-todo:
        /usr/local/opt/pcre/lib/libpcre.1.dylib (compatibility version 4.0.0, current version 4.7.0)
        /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
Run Code Online (Sandbox Code Playgroud)

按照https://github.com/commercialhaskell/stack/issues/1032上的说明,我尝试了以下操作:

$ stack build --ghc-options -static --ghc-options -optl-static
difftodo-0.2.0: configure
Configuring difftodo-0.2.0...
difftodo-0.2.0: build
Preprocessing library difftodo-0.2.0...
ld: illegal text reloc in '_c1TGM_info' to '_stg_sel_1_upd_info' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
`gcc' failed …
Run Code Online (Sandbox Code Playgroud)

macos haskell-stack

6
推荐指数
0
解决办法
324
查看次数

如何在Haskell Data.Tree中查找节点的路径

给定Haskell中的树(由a表示Data.Tree),我如何找到节点的路径?

例如

import Data.Tree

tree = Node 1 [Node 2 [Node 3 []], Node 4 []]
Run Code Online (Sandbox Code Playgroud)

形成一个看起来像的树:

1
|
+- 2
|  |
|  `- 3
|
`- 4
Run Code Online (Sandbox Code Playgroud)

我怎么能做一个pathToNode这样的功能:

pathToNode 0 tree => []
pathToNode 1 tree => [1]
pathToNode 2 tree => [1, 2]
pathToNode 3 tree => [1, 2, 3]
pathToNode 4 tree => [1, 4]
Run Code Online (Sandbox Code Playgroud)

在我的特定情况下,任何给定的值只会在树中出现一次,因此可以接受返回值路径的解决方案.

到目前为止,我最好的答案是:

pathToNode :: (Eq a) => a -> Tree a -> [a]
pathToNode x …
Run Code Online (Sandbox Code Playgroud)

tree haskell

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

标签 统计

haskell ×4

ghc ×2

ggplot2 ×1

haskell-stack ×1

macos ×1

r ×1

tree ×1

types ×1