当我barmode='group'进入Layoutwhile时trace2 = Bar(...,yaxis='y2'),这会导致条形堆叠或重叠,而不是将它们分组.如何在有多个轴的情况下对条形图进行分组?
我去了这些但没有用:
我似乎在网上找到这个问题的答案有些困难.标题是基本问题,但更具体地说,我希望有两个x轴,一个位于图的顶部,取决于底部的一个.然而,这不是一个简单的关系,即x2!= 5*x1或类似的东西.关系由数据文件本身给出.所以更具体地说,我有一个看起来像这样的文件:
V T P
2.0 15.0 0.586
3.0 17.4 0.798
4.0 25.3 1.023
5.0 28.9 1.124
6.0 30.2 1.456
Run Code Online (Sandbox Code Playgroud)
我想在x1y1轴上绘制相对于(wrt)P的T曲线,并在x2y1轴上绘制T wrt V. 因此,x1轴将显示P范围,x2将在x1的相应位置显示V范围,即x1轴上的0.586将在相同位置的x2轴上具有2.0.这实际上在Gnuplot中是否可行,或者我必须与两个x轴有关系才能做到这一点?任何帮助将不胜感激.先感谢您.
我尝试在一个图中绘制两个极坐标图.见下面的代码:
fig = super(PlotWindPowerDensity, self).get_figure()
rect = [0.1, 0.1, 0.8, 0.8]
ax = WindSpeedDirectionAxes(fig, rect)
self.values_dict = collections.OrderedDict(sorted(self.values_dict.items()))
values = self.values_dict.items()
di, wpd = zip(*values)
wpd = np.array(wpd).astype(np.double)
wpdmask = np.isfinite(wpd)
theta = self.radar_factory(int(len(wpd)))
# spider plot
ax.plot(theta[wpdmask], wpd[wpdmask], color = 'b', alpha = 0.5)
ax.fill(theta[wpdmask], wpd[wpdmask], facecolor = 'b', alpha = 0.5)
# bar plot
ax.plot_bar(table=self.table, sectors=self.sectors, speedbins=self.wpdbins, option='wind_power_density', colorfn=get_sequential_colors)
fig.add_axes(ax)
return fig
Run Code Online (Sandbox Code Playgroud)

条形的长度是数据库(该扇区的采样点数).条形图的颜色显示相应扇区中某些值区(例如2.5-5 m/s)的频率(蓝色:低,红色:高).蓝蜘蛛图显示每个扇区的平均值.
在所示的图中,每个图的值是相似的,但这种情况很少见.我需要将第二个绘图分配给另一个轴并在另一个方向上显示该轴.
编辑:
在乔的好答案之后,我得到了这个数字的结果.
这几乎是我想要实现的一切.但有些观点我无法弄清楚.
该图用于动态变化的数据库.因此,我需要一种动态的方式来获得圆圈的相同位置.直到现在我解决它:
start, end = ax2.get_ylim()
ax2.yaxis.set_ticks(np.arange(0, end, end / len(ax.yaxis.get_ticklocs()))) …Run Code Online (Sandbox Code Playgroud)有人可以帮我删除在我的极坐标图中形成环的网格线。我想保留(甚至加粗)轴并为每个轴标签添加刻度。
这是我正在使用的代码、绘图图像以及我想要的轴图像。
import numpy as np
import pylab as pl
import matplotlib.pyplot as py
class Radar(object):
def __init__(self, fig, titles, labels, rect=None):
if rect is None:
rect = [0.05, 0.05, 0.95, 0.95]
self.n = len(titles)
self.angles = [a if a <=360. else a - 360. for a in np.arange(90, 90+360, 360.0/self.n)]
self.axes = [fig.add_axes(rect, projection="polar", label="axes%d" % i)
for i in range(self.n)]
self.ax = self.axes[0]
self.ax.set_thetagrids(self.angles, labels=titles, fontsize=12, weight="bold")
for ax in self.axes[1:]:
ax.patch.set_visible(False)
ax.grid("off")
ax.xaxis.set_visible(False)
for ax, angle, label …Run Code Online (Sandbox Code Playgroud) 假设我有以下代码来创建三个并排图像:
n=10
x = np.random.rand(n,1)
y = np.random.rand(1,n)
z = np.random.rand(n,n)
fig, ax = plt.subplots(1, 3)
ax[0].imshow(x)
ax[1].imshow(z)
ax[2].imshow(y)
Run Code Online (Sandbox Code Playgroud)
但是,轴会自动缩放,以使第一个图像中的垂直轴大于第二个图像中的垂直轴。
有没有一种方法可以以编程方式强制所有大小的图像尺寸n在三个图中看起来相同,而与窗口大小无关?我正在寻找一种链接轴或图像的方法,以使第一个图的垂直轴与第二个图的垂直轴具有相同的大小,而第三个图的水平轴与不论窗口大小如何,第二个绘图的水平轴。即这样的事情:

我正在使用两个轴进行绘图,支持选取线条。我正在使用 matplotlib 和 twinx() 命令。不幸的是,选择事件仅针对最顶部轴中的艺术家调用(请参见下面的示例)。
import matplotlib.pyplot as plt
import numpy as np
def onPick(event):
print(event.artist.get_label())
def pick():
fig=plt.figure(figsize=(5, 4), dpi=100, tight_layout=True)
axis_1=fig.add_subplot(111)
axis_2=axis_1.twinx()
axis_1.set_ylim(0, 10)
axis_2.set_ylim(0, 10)
x=np.array([1,2,3,4])
y_1=np.array([1,1,1,1])
y_2=y_1+4
axis_1.plot(x, y_1, picker=5, label='line_1')
axis_2.plot(x, y_2, picker=5, label='line_2')
fig.canvas.mpl_connect('pick_event', onPick)
plt.show()
if __name__=='__main__':
pick()
Run Code Online (Sandbox Code Playgroud)
有没有办法从下面的轴中选取线?
我正在尝试使用 mpl_toolkits.axes_grid1 中的 host_subplot 制作一个具有两个 y 轴的图,其中一个是对数轴,一个是线性轴。该图看起来不错,但辅助 y 轴(右)的小刻度也显示在图内部的主 y 轴(左)上。
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
host = host_subplot(111)
host.set_yticks(np.arange(-12, -3, 1.0))
par1 = host.twinx()
par1.set_ylim( 2.7040e+3, 1.3552e+7)
par1.set_yscale('log')
minorLocator_x1 = MultipleLocator(0.3333)
minorLocator_y1 = MultipleLocator(0.5)
host.xaxis.set_minor_locator(minorLocator_x1)
host.yaxis.set_minor_locator(minorLocator_y2)
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法修复镜像小对数轴刻度:
host = host_subplot(111, axes_class=AA.Axes)
Run Code Online (Sandbox Code Playgroud)
但是,这会产生另一个问题,即 x 轴刻度标签显示在图窗内部,就像 x 轴标签一样。

关于如何规避这些问题有什么想法吗?
我正在处理大数据集,需要绘制多个堆叠趋势图,但遇到了与绘图中允许的 y 轴数量相关的问题。我尝试了多种方法来解决这个问题,但没有效果。
每当我尝试使用 100 多个 y 轴趋势绘制数据图表时,趋势就会开始超越之前的趋势。这是我尝试绘制 106 种趋势的图像:
如果将趋势数量减少到 99 个趋势,则所有这些都会显示在图表中:
我正在使用plotly 的python API 在ipython 笔记本中构建这些图表。
一张图中允许的 y 轴数量是否有限制?
我试图在 matplotlib 中使用单独的 y 轴在条形图上叠加一组箱线图。我在任何地方都找不到示例,并且尝试了我能想到的所有方法ax.set_zorder()和 ax2.set_alpha()。有没有办法仅从箱线图设置背景不透明?ax.patch.set_facecolor('None')完全删除背景...
这是我尝试过的:
import matplotlib.pyplot as plt
import numpy as np
example_data = [1,2,1],[1,2,2,2],[3,2,1]
data = [i for i in example_data]
data_len = [len(i) for i in example_data]
labels = ['one','two','three']
plt.figure()
fig, ax = plt.subplots()
plt.boxplot(data)
ax.set_xticklabels(labels,rotation='vertical')
ax2 = ax.twinx()
ax2.bar(ax.get_xticks(),data_len,color='yellow', align='center')
ax2.set_zorder(1)
ax.set_zorder(2)
ax2.set_alpha(0.1)
ax.patch.set_facecolor('None')
plt.show()
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助。
我正在制作主成分的 3D 散点图(附图片)。尽管我使用的是aspectmode='cube',但轴的大小不相等。
我创建了一个 MRE 来测试,在那个测试中,轴是相等的。所以,我很困惑。
axx <- list(
gridcolor='rgb(255, 255, 255)',
zerolinecolor='rgb(255, 255, 255)',
showbackground=TRUE,
backgroundcolor='rgb(230, 230,230)'
)
df = data.frame(
X=rnorm(100, mean=-5, sd=2),
Y=rnorm(100, mean=5, sd=5),
Z=rnorm(100, mean=20, sd=10),
color=sample(c('R','G'), 100, replace = T)
)
plot_ly(
data=df,
x = ~X,
y = ~Y,
z = ~Z,
color=~color
) %>%
add_markers(size=3) %>%
# layout(autosize = F, width = 1000, height = 1000)
layout(
# autosize=F,
# width=700,
# height=700,
aspectmode='cube',
title = 'MiSeq-239 Principal Components',
scene = …Run Code Online (Sandbox Code Playgroud) multiple-axes ×10
matplotlib ×6
python ×5
plot ×4
plotly ×3
python-3.x ×2
3d ×1
axes ×1
axis-labels ×1
background ×1
bar-chart ×1
gnuplot ×1
gridlines ×1
imshow ×1
python-2.7 ×1
r ×1
r-plotly ×1
radar-chart ×1
subplot ×1