我正在寻找一种可靠的方法来自动为我的情节选择线条样式.现在我有8行用于绘图,我希望自动选择可以区分的线型是可行的.
截至目前,我基本上有两种方式.设置标记或定义样式.两个人似乎都对seaborn有些问题.首先是使用循环仪:
plt.rc('axes', prop_cycle=cycler('linestyle', ['-', '--', ':', '-.']))
Run Code Online (Sandbox Code Playgroud)
如果我使用它,它要么覆盖seaborn设置,要么被seaborn覆盖,这取决于我先设置的那个.我在其中一个示例中找到的另一种方法是设置行的标记:
def makeStyles():
markers = []
for m in Line2D.markers:
try:
if len(m) == 1 and m != ' ':
markers.append(m)
except TypeError:
pass
styles = markers + [
r'$\lambda$',
r'$\bowtie$',
r'$\circlearrowleft$',
r'$\clubsuit$',
r'$\checkmark$']
return styles
Run Code Online (Sandbox Code Playgroud)
这里的问题是,相当一些标记看起来是相同的,这只是一条没有标记的线.
有没有其他方法可靠,适用于seaborn?
我使用(matplotlib.pyplot作为plt)matplotlib来绘制条形图.在该条形图上,我使用灰色的axhline()函数绘制了一条水平线.我希望水平线开始的点(y轴上的值= 42000)也应显示值,即42000.该怎么办?
这是我目前的形象:
在下图中,请参阅'39541.52'点?我希望在我的图像上显示完全相同的值,我的点值是'42000'
我正在使用 kivy 为应用程序制作一个非常简单的 gui。没有什么复杂的,非常简单的布局。
尽管如此,我在使用 TextInputs 时遇到了困难......它们总是以全高显示,我无法使它们调整为“合理”的文本高度,例如高度。
我正在使用 kv 文件样式,因为我发现将它集成到现有应用程序中更简洁、更容易……我想尽可能减少应用程序的 gui-python 代码。
这是我为 TextInput 得到的(无用添加 gui 的其他部分)。
Python代码
# textInput.py
from kivy import require
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang.builder import Builder
Builder.load_file('path/to/kv/file/textInput.kv')
require('1.10.0')
class MainScreen(BoxLayout):
pass
class Test(App):
def build(self):
self.title = 'Testing textInput'
return MainScreen()
if __name__ == '__main__':
Test().run()
Run Code Online (Sandbox Code Playgroud)
KV代码
# textInput.kv
<MainScreen>
orientation: 'vertical'
# Third section title
Label:
size_hint: (1, .1)
text: 'Setup Connection'
font_size: 25
# Third section Box
BoxLayout: …Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制一个图,其中两个子图是第一个的缩放。我想做的是如下图所示:
尤其是黑线。我现在的代码只是绘制子图
import matplotlib.pyplot as plt
import numpy as np
t=np.arange(1000)
x=np.sin(np.arange(1000)/10)
plt.figure()
ax1 = plt.subplot(2,1,1)
plt.plot(t,x)
ax2 = plt.subplot(2,2,3)
plt.plot(t[100:200],x[100:200])
ax3 = plt.subplot(2,2,4)
plt.plot(t[600:700],x[600:700])
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何在图形顶部添加黑线(以制作缩放框效果)。我不知道如何开始。有人有想法吗?
Seaborn regplot文档中列出的所有示例都显示了相同的点和回归线颜色.更改color参数会同时更改.如何为点设置不同的颜色作为线?
我正在尝试在 python3 上工作并使用 mac。我已经安装了pyobjc-core和pyobjc,但是错误说Quartz找不到。我对这种安装很陌生。有什么解决办法吗?
这是我的 pycharm 错误:
Traceback (most recent call last):
File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/_pyautogui_osx.py", line 5, in <module>
import Quartz
ModuleNotFoundError: No module named 'Quartz'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/Thyme/PycharmProjects/DinosourBot/Bot.py", line 2, in <module>
import pyautogui
File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/__init__.py", line 110, in <module>
from . import _pyautogui_osx as platformModule
File "/Users/Thyme/PycharmProjects/DinosourBot/venv/lib/python3.6/site-packages/pyautogui/_pyautogui_osx.py", line 7, in <module>
assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html"
AssertionError: You must …Run Code Online (Sandbox Code Playgroud) 让我们认为我在数据集中有四个特征,并且每次使用两个特征绘制散点图。我想分别为每个图提供标签。
fig,axes=plt.subplots(ncols=2,figsize=(10,8))
axes[0].scatter(x1,x2],marker="o",color="r")
axes[1].scatter(x3,x4,marker="x",color="k")
axes[0].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[0].set_label("Admitted")
axes[1].set_label("Not-Admitted")
axes.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在这里,我将得到两个散点图,但未显示标签。我想看到第一个图被承认为标签 ,第二个散点图不被承认。
我可以通过使用plt.legend()但无法获取已创建的图来提供标签。
(这可能是一个天真的问题.请原谅我.)
我使用的是Python 3.7.1和MatplotLib 3.0.1.
在下面的简单代码中,我使用不同的方法为轴分配标签.从OO的角度来看,它们似乎是等同的.但只有x axis标签显示.为什么?
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-2,2,60)
y = np.linspace(-2,2,60)
xx, yy = np.meshgrid(x,y)
z = xx**2 + yy**3
surf = ax.plot_surface(xx, yy, z, cmap="viridis")
ax.set_xlabel('x axis') # <====== This works
ax.yaxis.set_label('y axis') # <====== This doesn't work
ax.zaxis.set_label('z axis') # <====== This doesn't work
Run Code Online (Sandbox Code Playgroud)
在下图中,您只能看到x axis显示的标签.
根据这里,似乎该matplotlib.axis.XAxis.set_label()方法应该工作. …
我想将顶部和底部值添加到我的颜色条中。因此,顶部值的范围是我的数据中值的最大数量,底部是我数据中的最小数量
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
data = np.genfromtxt("E:\\data\\data1.txt", delimiter="\t")
minVal = np.min(data[np.nonzero(data)])
maxVal = np.max(data[np.nonzero(data)])
fig, ax = plt.subplots()
im = ax.imshow(data, cmap='Purples',
interpolation='nearest',
norm=matplotlib.colors.LogNorm(),
vmin=minVal,vmax = maxVal,
)
cbar = fig.colorbar(im)
print("min ",minVal)
print("max", maxVal)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我使用以下命令在图像上绘制一些圆圈:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as mpatches
image = np.zeros((20,20))
x_coords = [3,12]
y_coords = [3,12]
fig, ax = plt.subplots()
ax.imshow(image)
for a,b in zip(x_coords,y_coords):
circle = plt.Circle((a, b), 2, color="yellow", fill=False, linewidth=2)
ax.add_artist(circle)
Run Code Online (Sandbox Code Playgroud)
然后我可以使用这个问题的答案之一添加一个图例:
patches = [mpatches.Patch(color="yellow", label="Test")]
plt.legend(handles=patches, bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)
产生这个数字:
如何将图例手柄从矩形更改为圆形(类似于在图像上绘制的内容)?
我尝试过使用
patches = [mpatches.Circle((0,0), 2, color="yellow", label="Test")]
plt.legend(handles=patches, bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)
它仍然在图例中产生一个矩形。我也尝试过
plt.legend(handles=[circle], labels=["Test"], bbox_to_anchor=(1.05, 1), loc=2)
Run Code Online (Sandbox Code Playgroud)
仍然会产生一个矩形,但没有填充。期望的结果应该是有一个圆圈,其颜色和填充与图像上绘制的颜色和填充相同,作为图例标记。
我正在使用 Python 3.4 和 matplotlib 2.1.0
python ×10
matplotlib ×8
python-3.x ×2
seaborn ×2
bar-chart ×1
colorbar ×1
heatmap ×1
kivy ×1
mplot3d ×1
plot ×1