def plotGraph(X,Y):
fignum = random.randint(0,sys.maxint)
plt.figure(fignum)
### Plotting arrangements ###
return fignum
Run Code Online (Sandbox Code Playgroud)
import matplotlib.pyplot as plt
### tempDLStats, tempDLlabels are the argument
plot1 = plotGraph(tempDLstats, tempDLlabels)
plot2 = plotGraph(tempDLstats_1, tempDLlabels_1)
plot3 = plotGraph(tempDLstats_2, tempDLlabels_2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想将所有图形plot1,plot2,plot3保存到单个PDF文件中.有没有办法实现它?我不能plotGraph在主模块中包含该功能.
有一个名为的功能,pylab.savefig但只有当它与绘图模块一起放置时才会起作用.有没有其他方法可以实现它?
我需要一些指导来确定如何在pandas数据帧中从分组数据中绘制直方图块.这是一个例子来说明我的问题:
from pandas import DataFrame
import numpy as np
x = ['A']*300 + ['B']*400 + ['C']*300
y = np.random.randn(1000)
df = DataFrame({'Letter':x, 'N':y})
grouped = df.groupby('Letter')
Run Code Online (Sandbox Code Playgroud)
在我的无知中,我尝试了这个代码命令:
df.groupby('Letter').hist()
Run Code Online (Sandbox Code Playgroud)
失败的错误消息"TypeError:无法连接'str'和'float'对象"
任何帮助最受赞赏.
本质上是3d版本:使用matplotlib同时绘制两个直方图
尽管由于使用Axes 3d,所以我不知道该怎么做。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
kets = ["|00>","|01>","|10>","|11>"] #my axis labels
fig = plt.figure()
ax1 = fig.add_subplot(111,projection = '3d')
xpos = [0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3]
xpos = [i+0.25 for i in xpos]
ypos = [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
ypos = [i+0.25 for i in ypos]
zpos = [0]*16
dx = 0.5*np.ones(16)
dy = 0.5*np.ones(16)
dz = [1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0]
dz2 = [0.2*i for i in dz] # to superimpose dz
ticksx = np.arange(0.5,4,1)
ticksy = np.arange(0.6,4,1)
ax1.bar3d(xpos, …Run Code Online (Sandbox Code Playgroud) 我有两个或三个具有相同标题的csv文件,并希望在同一个图上绘制彼此重叠的每列的直方图.
下面的代码给出了两个单独的图,每个图包含每个文件的所有直方图.有没有一种紧凑的方法可以使用pandas/matplot lib在同一个图上绘制它们?我想象一下接近这个但是使用数据帧.
码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('input1.csv')
df2 = pd.read_csv('input2.csv')
df.hist(bins=20)
df2.hist(bins=20)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我有两个不同的数据框,每个数据框有 19 个变量,我正在用每个变量的直方图绘制一个多重图,如下所示:
fig, ax = plt.subplots(figsize=(19,10), dpi=50)
dataframe1.hist(ax=ax, layout=(3,7), alpha=0.5)
fig, ax = plt.subplots(figsize=(19,10), dpi=50)
dataframe2.hist(ax=ax, layout=(3,7), alpha=0.5)
Run Code Online (Sandbox Code Playgroud)
这会产生两个内部有 19 个直方图的图像。我想尝试的是在同一个子图中仅绘制一个具有共享直方图的图像。
我试过这个:
fig, ax = plt.subplots(figsize=(19,10), dpi=50)
dataframe1.hist(ax=ax, layout=(3,7), alpha=0.5, label='x')
dataframe2.hist(ax=ax, layout=(3,7), alpha=0.5, label='y', color='red')
Run Code Online (Sandbox Code Playgroud)
但它只画了最后一张。这是一个类似的例子:使用 matplotlib同时绘制两个直方图,但我如何将它应用于我的 19 个子图?
任何想法都会受到欢迎,提前致谢!
PS:我目前正在使用带有%matplotlib notebook选项的Jupyter Notebooks
我有两个数组:
import numpy as np
import pylab as pl
x = np.array([-36., -34.95522388, -33.91044776, -32.86567164,
-31.82089552, -30.7761194 , -29.73134328, -28.68656716,
-27.64179104, -26.59701493, -25.55223881, -24.50746269,
-23.46268657, -22.41791045, -21.37313433, -20.32835821,
-19.28358209, -18.23880597, -17.19402985, -16.14925373,
-15.10447761, -14.05970149, -13.01492537, -11.97014925,
-10.92537313, -9.88059701, -8.8358209 , -7.79104478,
-6.74626866, -5.70149254, -4.65671642, -3.6119403 ,
-2.56716418, -1.52238806, -0.47761194, 0.56716418,
1.6119403 , 2.65671642, 3.70149254, 4.74626866,
5.79104478, 6.8358209 , 7.88059701, 8.92537313,
9.97014925, 11.01492537, 12.05970149, 13.10447761,
14.14925373, 15.19402985, 16.23880597, 17.28358209,
18.32835821, 19.37313433, 20.41791045, 21.46268657,
22.50746269, 23.55223881, 24.59701493, 25.64179104,
26.68656716, 27.73134328, 28.7761194 , …Run Code Online (Sandbox Code Playgroud)