天道酬勤,学无止境

plot

绘图区域外部的 ggplot2 annotation_ticks(ggplot2 annotation_ticks on the outside of the plot region)

问题 我试图找到一种优雅的方式在用ggplot2创建的图上插入小刻度。 我找到了一个几乎完全符合我想要的功能:https://rdrr.io/github/hrbrmstr/ggalt/src/R/annotation_ticks.r 只有一个缺点:刻度线,就像annotation_logticks ,绘制在绘图区域内。 我需要他们在外面。 解决方案可能是对刻度长度使用负值。 当我这样做时,滴答声消失了。 我认为,这是由于ggplot2的默认剪裁动作,它抑制绘图区域外的绘图(?)(另请参阅轴外侧的日志刻度(annotation_logticks),剪裁被关闭,不幸的是 -导致刻度超出绘图范围)。 那么:是否有一个选项可以修改annotation_ticks - 函数以便在绘图区域之外产生刻度,只覆盖绘图的范围? 理想情况下,此功能应包含在annotate_ticks - 函数中(我不想保存然后重新排列绘图;我宁愿一步构建我的最终绘图)。 回答1 我找到了一种令人满意的解决方案来调整annotation_ticks函数。 如果我们只是简单地复制粘贴您发布的链接中的代码,我们可以在GeomTicks ggproto 对象的末尾附近进行以下小调整: GeomTicks <- ggproto( "GeomTicks", Geom, # ... # all the rest of the

2021-12-05 07:06:59    分类:技术分享    r   ggplot2   plot   axes

Matplotlib:在同一轴位置显示次要刻度和主要刻度(Matplotlib: Display Minor Ticks and Major Ticks at the Same Axis Location)

问题 我有一个主要和次要蜱的情节。 它是一个分组条形图,我不希望图例描述每个类别,而是希望每个类别都显示在小刻度中。 然后我希望每个组在主要刻度中都有名称。 我可以在某种程度上做到这一点,但主要刻度似乎覆盖了同一位置的次要刻度。 我怎样才能关闭它? import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame( { 0: [84, 41], 1: [0, 0], 2: [18.5, 3.5], 3: [65.5, 124], 4: [0.5, 0] }, index = ['A', 'B'] ) ax = df.plot.bar( rot=0, legend=False, color=['gray', 'red', 'green', 'lightblue', 'darkblue',], ) labels = df.unstack().index label_x, label_mode = [], [] for rect, idx in zip(ax.patches, labels): print(rect, idx) label_mode.append(idx[0]) label_x.append(rect.xy[0] + (rect.get_width() * 0.5)) ax.set

2021-12-05 06:11:39    分类:技术分享    python   pandas   matplotlib   plot

如何在matlab中将两个等高线图相互叠加?(How to superimpose two contour maps onto each other in matlab?)

问题 我在 Matlab 中有两个等高线图,并且这两个地图中的每一个都有一条指定单个 Z 值的曲线。 我想叠加两个等高线图,以便我可以找到两条 z 值曲线相交的单一解决方案。 我怎么能去叠加两个等高线图? % the two contour maps are coded the exact same way, but with different z-values x = 0.05:0.05:1; y = 0.0:0.05:1; [X, Y] = meshgrid(x, y); % Z-value data is copied from excel and pasted into an array Z = [data] contourf(X, Y, Z); pcolor(X, Y, Z); hold on shading interp title(); xlabel(); ylabel(); colorbar val = %z-value to plot onto colormap tol = %tolerance idxZval = (Z <= val+tol) & (Z >= val-tol); plot(X(idxZval), Y(idxZval))[enter image description here][1] 回答1

2021-12-05 04:39:42    分类:技术分享    matlab   plot   contourf

如何在 Matplotlib 中做一个 3D 圆(How to do a 3D circle in Matplotlib)

问题 我是 Python 的初学者。 我正在尝试使用与 Z 轴相切的 matplotlib 绘制一个圆。 我知道如何在 3D 中绘制球体,但不知道如何在 3D 图中绘制圆/环。 有人可以帮我写代码吗? 提前致谢! 回答1 您需要通常的导入以及 3D 工具包 import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt 您需要一个启用 3D 的axes对象 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') 你需要一个包含在平面yz 中的圆 theta = np.linspace(0, 2 * np.pi, 201) y = 10*np.cos(theta) z = 10*np.sin(theta) 现在我们可以绘制原圆和,作为一个例子,一些圈的旋转绕z -轴和它们的中心也放置在一个固定的距离(等于到c ircles'radius)从z -轴,使它们与它相切 for i in range(18): phi = i*np.pi/9 ax.plot(y*np.sin(phi)+10*np.sin(phi), y*np.cos(phi)+10*np

2021-12-05 04:26:32    分类:技术分享    python   matplotlib   plot   3d

如何自定义图例元素的位置?(How can I customize the positions of legend elements?)

问题 我有一个有几个情节和一个传说的人物。 是否可以手动更改图例中元素的排列? 例如,如何制作两列图例? 回答1 当然这是可能的。 请参阅此处的解释:http://undocumentedmatlab.com/blog/multi-column-grid-legend/ 回答2 要制作两列图例,一般的共识似乎是您需要创建两个单独的图例并手动将它们并排放置。 从这里的讨论中简化了解决方案。 x = 1:10; y1 = rand(1, 10); y2 = rand(1, 10); h1 = plot(x, y1, '-'); hold on h2 = plot(x, y2, '-.r'); ah1 = gca; ah2 = axes('position',get(gca,'position'), 'visible','off'); legend(ah1, h1, 'Location', [0.5 0.85 0.15 0.05], 'y1') legend(ah2, h2, 'Location', [0.7 0.85 0.15 0.05], 'y2') 回答3 MathWorks File Exchange 上有两个提交,可为您创建多列图例: 西蒙·海宁 (Simon Henin) 的 columnlegend(这是本周的 MATLAB 中心精选) gridLegend -

2021-12-05 04:13:56    分类:技术分享    matlab   plot   legend

如何在matlab中绘制一条垂直线?(How do I plot a single vertical line in matlab?)

问题 theta = linspace(0,2*pi,200); y = theta;x = 10;plot(x,y,'o'); 当我写这篇文章时,我得到了分数,但是当我用 plot(x,y) 替换 plot(x,y,'o') 时,我应该在 x=4 处得到一条垂直线,但图形变空了.. 回答1 你可以用stem x = 10; y = 200; stem(x,y,'Marker','none'); 回答2 从这个答案:https://it.mathworks.com/matlabcentral/answers/2031-adding-vertical-line-to-plot fig=figure; hax=axes; x=0:0.1:10; hold on plot(x,sin(x)) SP=1; %your point goes here line([SP SP],get(hax,'YLim'),'Color',[1 0 0])

2021-12-05 01:47:09    分类:技术分享    matlab   plot

R:来自 ggmap 的 get_map()/get_googlemap() 错误(R: Error in get_map()/get_googlemap() from ggmap)

问题 我正在尝试使用 GGmap 按州创建车辆车祸图。 地图上的点的大小取决于该州的车祸数量。 特别是,我正在尝试重新创建本博客文章的可视化集群部分中显示的 usa-plot。 但是,每当我尝试创建地图时,都会出现此错误。 Error in aperm.default(map, c(2, 1, 3)) : invalid first argument, must be an array 我已经设置了 Google API 并看到它正在接收点击。 我也启用了它并拥有密钥。 此外,我已经使用以下命令从 github 帐户安装了 GGmap: devtools::install_github("dkahle/ggmap", ref = "tidyup", force=TRUE) 因为 CRAN 没有更新。 我也多次重新启动并退出 R,但错误仍然存​​在。 即使我只是简单地运行: get_map() 它仍然导致错误: Error in aperm.default(map, c(2, 1, 3)) : invalid first argument, must be an array 下面是我的代码,它类似于博客文章中的代码: mydata$State <- as.character(mydata$State) mydata$MV.Number = as.numeric(mydata$MV

2021-12-03 19:47:27    分类:技术分享    r   dictionary   ggplot2   plot   ggmap

条形图在 Matlab 中切换颜色(Bar plot switch colors in Matlab)

问题 我在 Matlab 中有以下代码,它为我生成了一个有用的图。 现在我想让情节与另一个情节在颜色上具有可比性。 出于这个原因,应该切换一些颜色:颜色... “预拆分总 EON”与“拆分后总 EON” “预拆分纯 EON”与“拆分后纯 EON” “拆分前总 RWE”与“拆分后总 RWE” “拆分前纯 RWE”与“拆分后纯 RWE”。 这就是全部,但我不知道该怎么做,因为颜色是自动分配的...... clear all close all values = [4 1 11 2 3; 4 1 5 2 -10]; names = {'Pre split total EON' 'Post split total EON'... 'Pre split pure EON' 'Post split pure EON' 'Post split Uniper';... 'Pre split total RWE' 'Post split total RWE'... 'Pre split pure RWE' 'Post split pure RWE' 'PostSplitInnogy'}; categories = {'EON','RWE'}; figure; b = bar(values,'FaceColor','flat'); ticksList = b(1).XData+arrayfun(@(x

2021-12-03 19:19:38    分类:技术分享    matlab   plot   colors   matlab-figure

在ggplot中绘制多行(plot multiple lines in ggplot)

问题 我需要使用 ggplot 绘制不同日期的每小时数据,这是我的数据集: 数据由每小时观察结果组成,我想将每天的观察结果绘制成一条单独的线。 这是我的代码 xbj1 = bj[c(1:24),c(1,6)] xbj2 = bj[c(24:47),c(1,6)] xbj3 = bj[c(48:71),c(1,6)] ggplot()+ geom_line(data = xbj1,aes(x = Date, y= Value), colour="blue") + geom_line(data = xbj2,aes(x = Date, y= Value), colour = "grey") + geom_line(data = xbj3,aes(x = Date, y= Value), colour = "green") + xlab('Hour') + ylab('PM2.5') 请就此提出建议。 回答1 我会先制作一些假数据(我不会尝试转录你的): set.seed(2) x <- data.frame( Date = rep(Sys.Date() + 0:1, each = 24), # Year, Month, Day ... are not used here Hour = rep(0:23, times = 2), Value = sample(1e2, size = 48

2021-12-03 18:38:28    分类:技术分享    r   ggplot2   plot

具有影响颜色以外的标记的色调的群图(swarmplot with hue affecting marker beyond color)

问题 我试图通过让色调不仅影响颜色而且影响标记的另一个几何方面,使我的群图更容易在黑白和色盲人群中阅读。 移动电源 import seaborn as sns import matplotlib.pyplot as plt sns.set(style="whitegrid") tips = sns.load_dataset("tips") fig, ax = plt.subplots(1,1) ax = sns.swarmplot(x="day", y="total_bill", hue="sex",data=tips,size=8,ax=ax) plt.show() 结果 期望的结果(左边的) 回答1 其实我之前也想过同样的问题。 我没有想出最好的解决方案,但我有一个可以正常工作的黑客。 不幸的是,如果您使用dodge=True容易实现。 我们的想法是收集PathCollections通过创建的对象swarmplot 。 如果dodge=True那么您将获得N_cat*N_hues+N_hues集合(N_hues 附加项用于创建图例)。 您可以简单地遍历该列表。 由于我们希望所有色调都相同,因此我们使用 N_hues 步幅来获取与每个色调对应的所有集合。 之后,您可以自由地将该集合的paths更新为您选择的任何Path对象。 请参阅 Path 的文档以了解如何创建路径。

2021-12-03 13:21:24    分类:技术分享    python   plot   seaborn   swarmplot