小编glo*_*pes的帖子

是否可以与matplotlib进行添加剂混合?

当处理不同颜色的重叠高密度散射图或线图时,可以方便地实现添加剂混合方案,其中每个标记的RGB颜色加在一起以在画布中产生最终颜色.这是2D和3D渲染引擎中的常见操作.

但是,在Matplotlib中,我只发现了对alpha/opacity混合的支持.有没有迂回的方式做到这一点,还是我坚持渲染到位图,然后在一些绘画程序中混合它们?

编辑:这是一些示例代码和手动解决方案.

这将产生两个部分重叠的随机分布:

x1 = randn(1000)
y1 = randn(1000)
x2 = randn(1000) * 5
y2 = randn(1000)
scatter(x1,y1,c='b',edgecolors='none')
scatter(x2,y2,c='r',edgecolors='none')
Run Code Online (Sandbox Code Playgroud)

这将在matplotlib中产生以下内容: 分散 - 没有混合

正如您所看到的,有一些重叠的蓝点被红点遮挡,我们希望看到它们.通过在matplotlib中使用alpha/opacity混合,您可以:

scatter(x1,y1,c='b',edgecolors='none',alpha=0.5)
scatter(x2,y2,c='r',edgecolors='none',alpha=0.5)
Run Code Online (Sandbox Code Playgroud)

这会产生以下结果:

散射 -  alpha混合(0.5)

但我真正想要的是以下内容:

分散 - 添加剂混合物

我可以通过将每个绘图独立渲染到位图来手动完成:

xlim = plt.xlim()
ylim = plt.ylim()
scatter(x1,y1,c='b',edgecolors='none')
plt.xlim(xlim)
plt.ylim(ylim)
scatter(x2,y2,c='r',edgecolors='none')
plt.xlim(xlim)
plt.ylim(ylim)
plt.savefig(r'scatter_blue.png',transparent=True)
plt.savefig(r'scatter_red.png',transparent=True)
Run Code Online (Sandbox Code Playgroud)

这给了我以下图片:

分散 - 红色/蓝色通道

你可以做的是在Paint.NET/PhotoShop/gimp中将它们作为独立的层加载,只是添加它们.

现在理想的是能够在Matplotlib中以编程方式执行此操作,因为我将处理数百个这些!

python blending matplotlib color-blending

18
推荐指数
2
解决办法
3252
查看次数

如何在TortoiseGit中重置凭据?

该问题专门与TortoiseGit Windows客户端有关。我有一台不再使用的计算机,现在必须将该计算机不格式化就转移给另一个程序员。

奇怪的是,我似乎无法在此计算机上重置TortoiseGit凭据。全局设置中显然没有设置凭据帮助器。实际上,这台计算机上的Windows凭据管理器服务似乎已被永久禁用。我已经更改了所有本地和全局配置设置,以免根本不提及我的Git用户名,但是仍然可以将来自此机器的提交推送到我的所有GitHub远程服务器上。

关于设置和保存凭据,存在一些堆栈溢出问题。我要完全相反。

我什至不记得曾经尝试过在这台特定的计算机中保存凭据,这是我很少做的事情,而且我很少使用这台计算机。

git credentials tortoisegit

17
推荐指数
5
解决办法
4万
查看次数

System.Drawing类被视为GDI对象的是什么?

我一直难以理解System.Drawing命名空间中哪些确切的对象实际上对系统总GDI对象计数有贡献.例如,Matrix对象计数?GraphicsPathPen

为了测试这个,我在Form初始化时运行了以下代码.

public partial class Form1 : Form
{
    Timer timer = new Timer();
    List<Pen> pens = new List<Pen>();

    public Form1()
    {
        InitializeComponent();

        var r = new Random();
        for (int i = 0; i < 1000; i++)
        {
            var p = new Pen(
                Color.FromArgb(r.Next(255), r.Next(255), r.Next(255)),
                (float)r.NextDouble() * 10);
            pens.Add(p);
        }

        timer.Interval = 30;
        timer.Tick += timer_Tick;
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        panel1.Invalidate();
    }

    private void panel1_Paint(object …
Run Code Online (Sandbox Code Playgroud)

c# gdi+ winforms

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

如何在VS 2017中创建具有最小依赖性的.NET Standard NuGet包?

我目前正在使用Visual Studio 2017迁移库项目以支持.NET Standard 1.1.

我希望将该项目作为单个NuGet包发布,该包可以同时针对.NET Framework 4.5+和.NET Core,UWP等.

但是,当我尝试在.NET Framework项目中安装生成的包时,会生成包含.NET标准中定义的所有包的大量包依赖关系列表(请参阅下文):

在.NET 4.5项目上安装后的程序包依赖关系.

据我所知,这些都是作为.NET Standard 1.1规范的一部分定义的程序集.但是,我的特定项目实际上只需要它们中的一小部分,并且对于在项目中安装包的任何人来说,这种依赖性列表将非常混乱.

我试图按照类似问题的答案,其中建议是更改项目规范以仅引用项目所需的确切依赖项.

但是,答案是在旧的project.json格式的上下文中,现在已经被VS 2017中的新.csproj格式所取代.我试图通过删除<TargetFramework>指令删除对.NET Standard 1.1元数据包的依赖,但我只是设法打破了构建,无法找到任何方法专门添加所需的依赖项.

将库迁移到.NET Standard以实现最大平台兼容性的承诺极具吸引力,但建议依赖性的方法是什么,以便针对"经典".NET Framework的项目找不到所有这些依赖项"污染"的项目?

.net c# visual-studio-2017 .net-standard

10
推荐指数
1
解决办法
1544
查看次数

有没有一种从Visual Studio 2015项目自动创建NuGet包的简单方法?

在Visual Studio 2015之前,将项目设置为自动生成NuGet包非常简单.具体来说,你做了:

  1. .nu​​spec文件添加到项目中
  2. 在解决方案右键单击上下文菜单中启用NuGet包还原
  3. 编辑项目.csproj文件并将build属性设置<BuildPackage>为true

就是这样!

但是,从VS 2015开始,已删除MSBuild集成的程序包还原,并替换为新的自动程序包还原.虽然这些都是好消息,但似乎将build属性设置<BuildPackage>为true不再触发自动包构建.

这是功能的重大突破!有没有办法在不使用后期构建事件的情况下设置NuGet的自动构建?具体来说,我正在寻找一个MSBuild解决方案,因为它构成了我的构建工作流程的支柱.

msbuild nuget nuget-package-restore visual-studio-2015

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

Windows 10 Creators Update更改了PropertyGrid控件的样式

我刚刚将一些系统升级到Windows 10 Creators Update,我注意到windows窗体PropertyGrid控件将其标题和条形边距的默认视觉样式更改为深灰色,如下所示:

<code> PropertyGrid </ code>新风格

由于意外的视觉变化大多发生,用户不满意.有没有办法恢复到旧的默认值或可能覆盖默认样式?

windows propertygrid winforms

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

是否可以在IronPython脚本中使用lambdas调用Rx扩展方法?

有人可以解释一下这个非常奇怪的观察吗?

我一直试图从IronPython内部调用Rx扩展方法,结果证明它根本不可能.我把它归结为这个简单的例子:

import clr
clr.AddReference("System.Core")
from System.Linq import Enumerable

def process(value):
  return Enumerable.Select(value, lambda x:x)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们从正常的LINQ开始.如果我process使用数组或任何其他IEnumerable对象从我的托管环境调用该函数,它的工作完全正常.

那么我试着简单地替换引用以使用Observable扩展方法,如下所示:

import clr
clr.AddReference("System.Reactive.Linq")
from System.Reactive.Linq import Observable

def process(value):
  return Observable.Select(value, lambda x:x)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果我process用一个IObservable对象调用该函数,则调用崩溃时会出现一条丑陋的错误消息:

expected IObservable[object], got Select[int, int]

有没有人遇到这样的事情?我错过了什么吗?是否有一些特殊情况黑客可以使缺少的Enumerablelambda代理工作Observable?我不得不承认我在这里完全不知所措.

顺便说一句,正如一个完整性检查,以下示例正常工作:

import clr
clr.AddReference("System.Reactive.Linq")
from System.Reactive.Linq import Observable

def process(value):
  return Observable.Sum(value)
Run Code Online (Sandbox Code Playgroud)

我想把它留在那里只是为了清楚问题确实在方法调用中Observable.Select.

linq ironpython system.reactive reactivex

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

为什么使用Lazy <T>而不是静态工厂类用于单身?

在找到Lazy<T>类型之前,我使用以下模式来实现全局单例:

class DataModel
{
    public static XmlSerializer Serializer
    {
        get { return SerializerFactory.instance; }
    }

    static class SerializerFactory
    {
        internal static readonly XmlSerializer instance =
            new XmlSerializer(typeof(DataModel));
    }    
}
Run Code Online (Sandbox Code Playgroud)

此模式具有以下优点:

  1. 类型初始化是懒惰的.
  2. 类型初始化是线程安全的.
  3. 单例访问只是一个没有方法调用的直接字段访问.

最近我发现了很多帖子,建议Lazy<T>实现类似的单例访问模式.Lazy<T>(或LazyInitializer)是否会为此实施带来任何好处?

c# singleton

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