你能帮我注释一个ggplot2散点图吗?
对于典型的散点图(黑色):
df <- data.frame(x=seq(1:100), y=sort(rexp(100, 2), decreasing = T))
ggplot(df, aes(x=x, y=y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
我想以额外的刻度和自定义标签(红色)的形式添加注释:
示例图片:
我正在尝试在全息视图中创建一个 Holomap 图形,该图形在图的顶部包含一个图例。
配置选项“legend_position”适用于非全息图(下面的“example1.html”),但不适用于全息图(下面的“example2.html”)。
import pandas as pd
import holoviews as hv
df = pd.DataFrame(dict(x=[1, 2], y1=[0, 1], y2=[1, 0], y3=[0.8, 0.8], y4=[0.2,0.2]))
curve1 = hv.Curve(df, 'x', 'y1', label='curve1').opts(ylabel='y')
curve2 = hv.Curve(df, 'x', 'y2', label='curve2').opts(ylabel='y')
curve3 = hv.Curve(df, 'x', 'y3', label='curve3').opts(ylabel='y')
curve4 = hv.Curve(df, 'x', 'y4', label='curve4').opts(ylabel='y')
cc12 = (curve1 * curve2).opts(legend_position='top')
hv.save(cc12, "example1.html")
cc34 = (curve3 * curve4).opts(legend_position='top')
hm = hv.HoloMap({'a':cc12, 'b':cc34}, kdims=["option"])
hm = hm.opts(legend_position='top')
hv.save(hm, "example2.html")
Run Code Online (Sandbox Code Playgroud)
我认为这与在全息图案例中不允许在情节之外的图例位置有关。所以问题的答案可能只是“它不应该工作”。问题在于,对于某些绘图,默认图例与曲线重叠,使曲线难以解释。
您可能知道python日志记录模块支持*kwargs的定义来自定义日志条目.记录异常似乎不支持此操作.
我的问题:使用logging.exception有一种简单的方法来使用自定义kwargs吗?
最小的例子如下:
import logging
import logging.handlers
def create_logger():
""" initialize logging using sys log
"""
logger = logging.getLogger()
form = '%(asctime)s [%(levelname)-8s] %(xyz)s %(message)s'
local_log_handler = logging.handlers.SysLogHandler(address='/dev/log')
formatter = logging.Formatter(form)
local_log_handler.setFormatter(formatter)
logger.addHandler(local_log_handler)
return logger
log = create_logger()
try:
raise AttributeError("whatever")
except:
log.warn('Alarm! Fire!', extra={'xyz':'POLICE'})
log.exception('')
Run Code Online (Sandbox Code Playgroud)
输出:
Traceback (most recent call last):
File "logexample.py", line 27, in <module>
log.exception('')
File "/usr/lib/python2.7/logging/__init__.py", line 1172, in exception
self.error(msg, exc_info=1, *args)
File "/usr/lib/python2.7/logging/__init__.py", line 1166, in error …
Run Code Online (Sandbox Code Playgroud) 我正在包装错误(以添加上下文),然后区分两个错误。这是我目前用于测试的场景。(该函数是否正确识别了错误?)我的问题是如何减少冗长。
我有两个会产生不同错误的函数:
func a() error {
return errors.New("a")
}
func b() error {
return errors.New("b")
}
Run Code Online (Sandbox Code Playgroud)
它们都由传播错误的第三个函数调用。
func doStuff() error {
err := a()
if err != nil {
return WrapA{err}
}
err = b()
if err != nil {
return WrapB{err}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
在我的主要函数中,我区分了这两个错误。
func main() {
fmt.Println("Hello, playground")
err := doStuff()
switch err.(type) {
case WrapA:
fmt.Println("error from doing a")
case WrapB:
fmt.Println("error from doing b")
case nil:
fmt.Println("nil")
default:
fmt.Println("unknown")
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。不幸的是,要实现WrapA
和 …