matlab - 在matlab中打印后在填充网格中可见三角线
问题描述
我一直在使用小提琴在 matlab 中生成(所谓的)小提琴图。情节看起来不错:
但是,将其打印(PDF 和 svg)会生成一个文件,其中三角线是可见的(放大以表明这一点):
我想这是这些行的 zbuffer 设置的某种问题。在引擎盖下violin
只是fill()
以一种看起来完全合法的方式使用:
h(i)=fill([F(:,i)+i;flipud(i-F(:,i))],[U(:,i);flipud(U(:,i))],fc,'FaceAlpha',alp,'EdgeColor',lc);
更换fill
并patch
不能解决问题!一个最小的、完整的和可验证的例子:
a=randn(10000,1);
[f, u, bb]=ksdensity(a,'bandwidth',0.2);
figure; fill([f'+i;flipud(i-f')],[u';flipud(u')],'b','FaceAlpha',1);
print(gcf,'-dpdf','a.pdf'); % bad
print(gcf,'-dsvg','a.svg'); % bad
figure; patch([f'+i;flipud(i-f')],[u';flipud(u')],'b','FaceAlpha',1);
print(gcf,'-dpdf','b.pdf'); % bad
print(gcf,'-dsvg','b.svg'); % bad
我的版本是 R2017a。
解决方案
这是使用补丁创建表示图形外部的单个多边形的示例。
theta = linspace(0,2*pi,100);
r = sqrt(1.125+cos(theta*2));
y = r.*cos(theta);
x = r.*sin(theta);
subplot(121)
plot(x,y);
subplot(122)
h = patch(x,y,'r','edgecolor','none');
推荐阅读
- python - 删除字典值python中的空格
- javascript - 内联比较分配多个变量
- kubernetes - Prometheus 自定义指标没有出现在 custom.metrics Kubernetes 中
- c++ - 编译器找不到 DPI 相关函数
- python - 如何在python 3中的变量中将日期转换为小时和分钟?
- c++ - Is it possible to have more than one boost::asio::thread_pool in an application?
- google-cloud-platform - gcloud compute ssh -- avoid having to 2FA every time?
- javascript - When adding new data/rows to a one jqGrid1 from another jqGrid2, the old data in jqGrid1 is lost (javascript)
- clojure - Is this a correct characterisation of the behaviours of square brackets in Scheme, Racket, Common Lisp, and Clojure?
- javascript - 如何在没有回调地狱的情况下根据 SQLite 中的查询数据编写 SQL 查询链和更新?